Chromium Code Reviews| Index: talk/app/webrtc/java/jni/androidnetworkmonitor_jni.h |
| diff --git a/talk/app/webrtc/java/jni/androidnetworkmonitor_jni.h b/talk/app/webrtc/java/jni/androidnetworkmonitor_jni.h |
| index 3f5110c2c4f14093adb6d04edb7bffa560d604dc..4dd3fd89d6e05b8606cb8738ed0cafc7c100f531 100644 |
| --- a/talk/app/webrtc/java/jni/androidnetworkmonitor_jni.h |
| +++ b/talk/app/webrtc/java/jni/androidnetworkmonitor_jni.h |
| @@ -30,11 +30,36 @@ |
| #include "webrtc/base/networkmonitor.h" |
| +#include <map> |
| + |
| +#include "webrtc/base/criticalsection.h" |
| #include "webrtc/base/thread_checker.h" |
| #include "talk/app/webrtc/java/jni/jni_helpers.h" |
| namespace webrtc_jni { |
| +// c++ equivalent of java NetworkMonitorAutoDetect.ConnectionType. |
| +enum NetworkType { |
| + NETWORK_UNKNOWN, |
| + NETWORK_ETHERNET, |
| + NETWORK_WIFI, |
| + NETWORK_4G, |
| + NETWORK_3G, |
| + NETWORK_2G, |
| + NETWORK_BLUETOOTH, |
| + NETWORK_NONE |
| +}; |
| + |
| +// c++ equivalent of NetworkMonitorAutoDetect.NetworkInformation. |
|
pthatcher1
2016/01/14 20:07:24
The comments are mutually recursive. Could one of
honghaiz3
2016/01/15 01:00:38
Done.
|
| +struct NetworkInformation { |
| + std::string interface_name; |
| + rtc::NetworkHandle handle; |
| + NetworkType type; |
| + std::vector<rtc::IPAddress> ip_addresses; |
| + |
| + std::string ToString() const; |
| +}; |
| + |
| class AndroidNetworkMonitor : public rtc::NetworkMonitorBase { |
| public: |
| AndroidNetworkMonitor(); |
| @@ -44,6 +69,10 @@ class AndroidNetworkMonitor : public rtc::NetworkMonitorBase { |
| void Start() override; |
| void Stop() override; |
| + int BindSocketToNetwork(int socket_fd, |
| + const rtc::IPAddress& address) override; |
| + void OnNetworkAvailable(const NetworkInformation& network_info); |
| + |
| private: |
| JNIEnv* jni() { return AttachCurrentThreadIfNeeded(); } |
| @@ -51,15 +80,18 @@ class AndroidNetworkMonitor : public rtc::NetworkMonitorBase { |
| ScopedGlobalRef<jobject> j_network_monitor_; |
| rtc::ThreadChecker thread_checker_; |
| static jobject application_context_; |
| + std::map<rtc::IPAddress, NetworkInformation> network_info_map_; |
|
pthatcher1
2016/01/14 20:07:24
A better name might be networy_info_by_address_.
honghaiz3
2016/01/15 01:00:38
Done.
|
| }; |
| class AndroidNetworkMonitorFactory : public rtc::NetworkMonitorFactory { |
| public: |
| AndroidNetworkMonitorFactory() {} |
| - rtc::NetworkMonitorInterface* CreateNetworkMonitor() override { |
| - return new AndroidNetworkMonitor(); |
| - } |
| + rtc::NetworkMonitorInterface* GetOrCreateNetworkMonitor() override; |
| + |
| + private: |
| + rtc::CriticalSection crit_; |
| + rtc::scoped_ptr<AndroidNetworkMonitor> network_monitor_; |
| }; |
| } // namespace webrtc_jni |