| /* | 
 |  *  Copyright 2017 The WebRTC project authors. All Rights Reserved. | 
 |  * | 
 |  *  Use of this source code is governed by a BSD-style license | 
 |  *  that can be found in the LICENSE file in the root of the source | 
 |  *  tree. An additional intellectual property rights grant can be found | 
 |  *  in the file PATENTS.  All contributing project authors may | 
 |  *  be found in the AUTHORS file in the root of the source tree. | 
 |  */ | 
 |  | 
 | #include <jni.h> | 
 |  | 
 | #include <cstdint> | 
 | #include <string> | 
 |  | 
 | #include "rtc_base/thread.h" | 
 | #include "rtc_tools/network_tester/test_controller.h" | 
 |  | 
 | #undef JNIEXPORT | 
 | #define JNIEXPORT __attribute__((visibility("default"))) | 
 |  | 
 | extern "C" JNIEXPORT jlong JNICALL | 
 | Java_com_google_media_networktester_NetworkTester_CreateTestController( | 
 |     JNIEnv* jni, | 
 |     jclass) { | 
 |   webrtc::ThreadManager::Instance()->WrapCurrentThread(); | 
 |   return reinterpret_cast<intptr_t>(new webrtc::TestController( | 
 |       0, 0, "/mnt/sdcard/network_tester_client_config.dat", | 
 |       "/mnt/sdcard/network_tester_client_packet_log.dat")); | 
 | } | 
 |  | 
 | extern "C" JNIEXPORT void JNICALL | 
 | Java_com_google_media_networktester_NetworkTester_TestControllerConnect( | 
 |     JNIEnv* jni, | 
 |     jclass, | 
 |     jlong native_pointer) { | 
 |   reinterpret_cast<webrtc::TestController*>(native_pointer) | 
 |       ->SendConnectTo("85.195.237.107", 9090); | 
 | } | 
 |  | 
 | extern "C" JNIEXPORT bool JNICALL | 
 | Java_com_google_media_networktester_NetworkTester_TestControllerIsDone( | 
 |     JNIEnv* jni, | 
 |     jclass, | 
 |     jlong native_pointer) { | 
 |   return reinterpret_cast<webrtc::TestController*>(native_pointer) | 
 |       ->IsTestDone(); | 
 | } | 
 |  | 
 | extern "C" JNIEXPORT void JNICALL | 
 | Java_com_google_media_networktester_NetworkTester_TestControllerRun( | 
 |     JNIEnv* jni, | 
 |     jclass, | 
 |     jlong native_pointer) { | 
 |   // 100 ms arbitrary chosen, but it works well. | 
 |   webrtc::Thread::Current()->ProcessMessages(/*cms=*/100); | 
 | } | 
 |  | 
 | extern "C" JNIEXPORT void JNICALL | 
 | Java_com_google_media_networktester_NetworkTester_DestroyTestController( | 
 |     JNIEnv* jni, | 
 |     jclass, | 
 |     jlong native_pointer) { | 
 |   webrtc::TestController* test_controller = | 
 |       reinterpret_cast<webrtc::TestController*>(native_pointer); | 
 |   if (test_controller) { | 
 |     delete test_controller; | 
 |   } | 
 |   webrtc::ThreadManager::Instance()->UnwrapCurrentThread(); | 
 | } |