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

Side by Side Diff: talk/app/webrtc/java/jni/jni_helpers.cc

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: 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2015 Google Inc. 3 * Copyright 2015 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation 11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution. 12 * and/or other materials provided with the distribution.
13 * 3. The name of the author may not be used to endorse or promote products 13 * 3. The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 * 26 *
27 */ 27 */
28 #include "talk/app/webrtc/java/jni/jni_helpers.h" 28 #include "talk/app/webrtc/java/jni/jni_helpers.h"
29 29
30 #include "talk/app/webrtc/java/jni/classreferenceholder.h"
31
30 #include <asm/unistd.h> 32 #include <asm/unistd.h>
31 #include <sys/prctl.h> 33 #include <sys/prctl.h>
32 #include <sys/syscall.h> 34 #include <sys/syscall.h>
33 #include <unistd.h> 35 #include <unistd.h>
34 36
35 namespace webrtc_jni { 37 namespace webrtc_jni {
36 38
37 static JavaVM* g_jvm = nullptr; 39 static JavaVM* g_jvm = nullptr;
38 40
39 static pthread_once_t g_jni_ptr_once = PTHREAD_ONCE_INIT; 41 static pthread_once_t g_jni_ptr_once = PTHREAD_ONCE_INIT;
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 jmethodID state_values_id = GetStaticMethodID( 251 jmethodID state_values_id = GetStaticMethodID(
250 jni, state_class, "values", ("()[L" + state_class_name + ";").c_str()); 252 jni, state_class, "values", ("()[L" + state_class_name + ";").c_str());
251 jobjectArray state_values = static_cast<jobjectArray>( 253 jobjectArray state_values = static_cast<jobjectArray>(
252 jni->CallStaticObjectMethod(state_class, state_values_id)); 254 jni->CallStaticObjectMethod(state_class, state_values_id));
253 CHECK_EXCEPTION(jni) << "error during CallStaticObjectMethod"; 255 CHECK_EXCEPTION(jni) << "error during CallStaticObjectMethod";
254 jobject ret = jni->GetObjectArrayElement(state_values, index); 256 jobject ret = jni->GetObjectArrayElement(state_values, index);
255 CHECK_EXCEPTION(jni) << "error during GetObjectArrayElement"; 257 CHECK_EXCEPTION(jni) << "error during GetObjectArrayElement";
256 return ret; 258 return ret;
257 } 259 }
258 260
261 std::string GetJavaEnumName(JNIEnv* jni,
262 const std::string& className,
263 jobject j_enum) {
264 jclass enumClass = FindClass(jni, className.c_str());
265 jmethodID nameMethod =
266 GetMethodID(jni, enumClass, "name", "()Ljava/lang/String;");
267 jstring name =
268 reinterpret_cast<jstring>(jni->CallObjectMethod(j_enum, nameMethod));
269 CHECK_EXCEPTION(jni) << "error during CallObjectMethod for " << className
270 << ".name";
271 return JavaToStdString(jni, name);
272 }
273
259 jobject NewGlobalRef(JNIEnv* jni, jobject o) { 274 jobject NewGlobalRef(JNIEnv* jni, jobject o) {
260 jobject ret = jni->NewGlobalRef(o); 275 jobject ret = jni->NewGlobalRef(o);
261 CHECK_EXCEPTION(jni) << "error during NewGlobalRef"; 276 CHECK_EXCEPTION(jni) << "error during NewGlobalRef";
262 RTC_CHECK(ret); 277 RTC_CHECK(ret);
263 return ret; 278 return ret;
264 } 279 }
265 280
266 void DeleteGlobalRef(JNIEnv* jni, jobject o) { 281 void DeleteGlobalRef(JNIEnv* jni, jobject o) {
267 jni->DeleteGlobalRef(o); 282 jni->DeleteGlobalRef(o);
268 CHECK_EXCEPTION(jni) << "error during DeleteGlobalRef"; 283 CHECK_EXCEPTION(jni) << "error during DeleteGlobalRef";
269 } 284 }
270 285
271 // Scope Java local references to the lifetime of this object. Use in all C++ 286 // Scope Java local references to the lifetime of this object. Use in all C++
272 // callbacks (i.e. entry points that don't originate in a Java callstack 287 // callbacks (i.e. entry points that don't originate in a Java callstack
273 // through a "native" method call). 288 // through a "native" method call).
274 ScopedLocalRefFrame::ScopedLocalRefFrame(JNIEnv* jni) : jni_(jni) { 289 ScopedLocalRefFrame::ScopedLocalRefFrame(JNIEnv* jni) : jni_(jni) {
275 RTC_CHECK(!jni_->PushLocalFrame(0)) << "Failed to PushLocalFrame"; 290 RTC_CHECK(!jni_->PushLocalFrame(0)) << "Failed to PushLocalFrame";
276 } 291 }
277 ScopedLocalRefFrame::~ScopedLocalRefFrame() { 292 ScopedLocalRefFrame::~ScopedLocalRefFrame() {
278 jni_->PopLocalFrame(NULL); 293 jni_->PopLocalFrame(NULL);
279 } 294 }
280 295
281 } // namespace webrtc_jni 296 } // namespace webrtc_jni
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698