Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(802)

Unified Diff: talk/app/webrtc/java/jni/androidnetworkmonitor_jni.h

Issue 1556743002: Bind a socket to a network if the network handle is set. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix a compiling issue for Windows Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698