mutable std::recursive_mutex mutex_;
};
-Context context;
+Context* context = new Context();
+
+__attribute__((destructor)) static void destructor() {
+ delete context;
+ context = nullptr;
+}
int AppComCreate(const char* endpoint,
aul_app_com_permission_h permission, app_com_cb callback, void* user_data,
return AUL_R_EINVAL;
}
+ if (context == nullptr) {
+ _E("Invalid context");
+ return AUL_R_EINVAL;
+ }
+
if (!aul_is_initialized()) {
if (aul_launch_init(nullptr, nullptr) < 0)
return AUL_R_ENOINIT;
.SendSimply(sync ? AUL_SOCK_NONE : AUL_SOCK_NOREPLY);
if (ret == 0) {
*connection = static_cast<aul_app_com_connection_h>(
- context.AddConnection(endpoint, callback, user_data));
+ context->AddConnection(endpoint, callback, user_data));
}
return ret;
int app_com_recv(bundle* b) {
if (b == nullptr)
return -1;
+ if (context == nullptr)
+ return -1;
- return context.Receive(b);
+ return context->Receive(b);
}
extern "C" API aul_app_com_permission_h aul_app_com_permission_create() {
return AUL_R_EINVAL;
}
+ if (context == nullptr) {
+ _E("Invalid context");
+ return AUL_R_EINVAL;
+ }
+
if (!aul_is_initialized()) {
if (aul_launch_init(nullptr, nullptr) < 0)
return AUL_R_ENOINIT;
.SendSimply();
if (ret == 0) {
*connection = static_cast<aul_app_com_connection_h>(
- context.AddConnection(endpoint, callback, user_data));
+ context->AddConnection(endpoint, callback, user_data));
}
return ret;
if (connection == nullptr)
return AUL_R_EINVAL;
+ if (context == nullptr) {
+ _E("Invalid context");
+ return AUL_R_EINVAL;
+ }
+
auto* conn = static_cast<AppComConnection*>(connection);
- if (!context.ExistConnection(conn)) {
+ if (!context->ExistConnection(conn)) {
_E("Invalid parameter");
return AUL_R_EINVAL;
}
- std::lock_guard<std::recursive_mutex> lock(context.GetMutex());
+ std::lock_guard<std::recursive_mutex> lock(context->GetMutex());
conn->Disable();
std::string endpoint = conn->GetEndpoint();
- if (!context.ExistConnection(endpoint)) {
+ if (!context->ExistConnection(endpoint)) {
tizen_base::Bundle b { { AUL_K_COM_ENDPOINT, endpoint } };
int ret = AppRequest(APP_COM_LEAVE, getuid())
.With(std::move(b))
g_idle_add_full(G_PRIORITY_HIGH, [](gpointer user_data) -> gboolean {
auto* conn = static_cast<AppComConnection*>(user_data);
- std::lock_guard<std::recursive_mutex> lock(context.GetMutex());
- context.RemoveConnection(conn);
+ std::lock_guard<std::recursive_mutex> lock(context->GetMutex());
+ context->RemoveConnection(conn);
return G_SOURCE_REMOVE;
}, connection, nullptr);