/* * 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 #undef JNIEXPORT #define JNIEXPORT __attribute__((visibility("default"))) #include #include "rtc_base/logging.h" #include "rtc_base/thread.h" #include "rtc_tools/network_tester/test_controller.h" extern "C" JNIEXPORT jlong JNICALL Java_com_google_media_networktester_NetworkTester_CreateTestController( JNIEnv* jni, jclass) { rtc::ThreadManager::Instance()->WrapCurrentThread(); return reinterpret_cast(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(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(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. rtc::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(native_pointer); if (test_controller) { delete test_controller; } rtc::ThreadManager::Instance()->UnwrapCurrentThread(); }