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