From: Hosang Kim Date: Mon, 10 Jul 2023 07:04:09 +0000 (+0900) Subject: bootstrap: use thread for grpc server X-Git-Tag: accepted/tizen/unified/20230713.014419^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a9f7121a1b5b7f87a958efb33c9a43c619883050;p=platform%2Fcore%2Fuifw%2Faurum.git bootstrap: use thread for grpc server Revert "bootstrap: remove unnecessary mainloop and thread." This reverts commit 0ff9860541bb67fc3372d1261a047c1d29e24412. Change-Id: I3cd4511e3da32443c373377be1d15582f61451f8 --- diff --git a/org.tizen.aurum-bootstrap/src/BootstrapServer.cc b/org.tizen.aurum-bootstrap/src/BootstrapServer.cc index 22b397c..93902f5 100644 --- a/org.tizen.aurum-bootstrap/src/BootstrapServer.cc +++ b/org.tizen.aurum-bootstrap/src/BootstrapServer.cc @@ -31,6 +31,7 @@ using namespace grpc; typedef struct _ServiceContext { + GThread *thread; std::unique_ptr server; bool forceTouchEnabled; } ServiceContext; @@ -51,7 +52,8 @@ static void _vconf_force_enable_touch_set(void *data, bool enable) ctx->forceTouchEnabled = enable; } -static bool _service_app_create(void *data) +static gpointer +_grpc_thread_func (gpointer data) { ServiceContext *ctx = (ServiceContext *)data; std::string binding("0.0.0.0:50051"); @@ -76,6 +78,20 @@ static bool _service_app_create(void *data) ctx->server = std::move(builder.BuildAndStart()); ctx->server->Wait(); + return NULL; +} + +static bool _service_app_create(void *data) +{ + ServiceContext *ctx = (ServiceContext *)data; + + ctx->thread = g_thread_new("grpc_thread", _grpc_thread_func, ctx); + + if (!ctx->thread) { + LOGE("Thread is empty!"); + return false; + } + return true; } @@ -86,6 +102,7 @@ static void _service_app_terminate(void *data) if (ctx->forceTouchEnabled) _vconf_force_enable_touch_set(ctx, false); ctx->server->Shutdown(); + g_thread_join(ctx->thread); } static void _service_app_control(app_control_h app_control, void *data)