示例#1
0
void
RpcChannel_Shutdown(RpcChannel *chan)
{
   if (chan != NULL) {
      g_static_mutex_free(&chan->outLock);
   }

   if (chan != NULL && chan->funcs != NULL && chan->funcs->shutdown != NULL) {
      if (chan->in != NULL) {
         if (chan->inStarted) {
            RpcIn_stop(chan->in);
         }
         chan->inStarted = FALSE;
         RpcIn_Destruct(chan->in);
         chan->in = NULL;
      } else {
         ASSERT(!chan->inStarted);
      }

      if (chan->mainCtx != NULL) {
         g_main_context_unref(chan->mainCtx);
      }
      chan->funcs->shutdown(chan);
   }
}
示例#2
0
static void
RpcInShutdown(RpcChannel *chan)
{
   BackdoorChannel *bdoor = chan->_private;
   RpcInStop(chan);
   if (bdoor->in != NULL) {
      RpcIn_Destruct(bdoor->in);
   }
   RpcOut_Destruct(bdoor->out);
   g_static_mutex_free(&bdoor->outLock);
   if (bdoor->mainCtx != NULL) {
      g_main_context_unref(bdoor->mainCtx);
   }
   g_free(bdoor);
}