mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-08 17:47:18 +00:00
Add a RequestServerService class that uses the LadybirdServiceBase class added previously. Bind to it from the WebContentService's service_main() during startup.
37 lines
1.1 KiB
C++
37 lines
1.1 KiB
C++
/*
|
|
* Copyright (c) 2023, Andrew Kaster <akaster@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include "JNIHelpers.h"
|
|
#include "LadybirdServiceBase.h"
|
|
#include <jni.h>
|
|
|
|
jobject global_instance;
|
|
jclass global_class_reference;
|
|
jmethodID bind_request_server_method;
|
|
|
|
extern "C" JNIEXPORT void JNICALL
|
|
Java_org_serenityos_ladybird_WebContentService_nativeInit(JNIEnv* env, jobject thiz)
|
|
{
|
|
global_instance = env->NewGlobalRef(thiz);
|
|
|
|
auto local_class = env->FindClass("org/serenityos/ladybird/WebContentService");
|
|
if (!local_class)
|
|
TODO();
|
|
global_class_reference = reinterpret_cast<jclass>(env->NewGlobalRef(local_class));
|
|
env->DeleteLocalRef(local_class);
|
|
|
|
auto method = env->GetMethodID(global_class_reference, "bindRequestServer", "(II)V");
|
|
if (!method)
|
|
TODO();
|
|
bind_request_server_method = method;
|
|
}
|
|
|
|
void bind_request_server_java(int ipc_socket, int fd_passing_socket)
|
|
{
|
|
JavaEnvironment env(global_vm);
|
|
env.get()->CallVoidMethod(global_instance, bind_request_server_method, ipc_socket, fd_passing_socket);
|
|
}
|