static void RpcInSetup(RpcChannel *chan, GMainContext *ctx, const char *appName, gpointer appCtx) { BackdoorChannel *bdoor = chan->_private; bdoor->mainCtx = g_main_context_ref(ctx); bdoor->in = RpcIn_Construct(ctx, RpcChannel_Dispatch, chan); ASSERT(bdoor->in != NULL); }
void RpcChannel_Setup(RpcChannel *chan, const gchar *appName, GMainContext *mainCtx, gpointer appCtx, RpcChannelResetCb resetCb, gpointer resetData) { size_t i; RpcChannelInt *cdata = (RpcChannelInt *) chan; cdata->appName = g_strdup(appName); cdata->appCtx = appCtx; cdata->mainCtx = g_main_context_ref(mainCtx); cdata->resetCb = resetCb; cdata->resetData = resetData; cdata->resetReg.name = "reset"; cdata->resetReg.callback = RpcChannelReset; cdata->resetReg.clientData = chan; /* Register the callbacks handled by the rpcChannel library. */ RpcChannel_RegisterCallback(chan, &cdata->resetReg); for (i = 0; i < ARRAYSIZE(gRpcHandlers); i++) { RpcChannel_RegisterCallback(chan, &gRpcHandlers[i]); } if (chan->funcs != NULL && chan->funcs->setup != NULL) { chan->funcs->setup(chan, mainCtx, appName, appCtx); } else { chan->mainCtx = g_main_context_ref(mainCtx); chan->in = RpcIn_Construct(mainCtx, RpcChannel_Dispatch, chan); ASSERT(chan->in != NULL); } }