network_change_notifier_win.h revision 731df977c0511bca2206b5f333555b1205ff1f43
1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be
3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file.
4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef NET_BASE_NETWORK_CHANGE_NOTIFIER_WIN_H_
6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define NET_BASE_NETWORK_CHANGE_NOTIFIER_WIN_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <windows.h>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/basictypes.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/object_watcher.h"
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "net/base/network_change_notifier.h"
14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace net {
16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass NetworkChangeNotifierWin : public NetworkChangeNotifier,
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                 public base::ObjectWatcher::Delegate {
19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott public:
20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  NetworkChangeNotifierWin();
21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott private:
23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  virtual ~NetworkChangeNotifierWin();
24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
25731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // NetworkChangeNotifier methods:
26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  virtual bool IsCurrentlyOffline() const;
27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // ObjectWatcher::Delegate methods:
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnObjectSignaled(HANDLE object);
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Begins listening for a single subsequent address change.
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void WatchForAddressChange();
33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  base::ObjectWatcher addr_watcher_;
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  OVERLAPPED addr_overlapped_;
36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott  DISALLOW_COPY_AND_ASSIGN(NetworkChangeNotifierWin);
38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott};
39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}  // namespace net
41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott
42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif  // NET_BASE_NETWORK_CHANGE_NOTIFIER_WIN_H_
43