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 |