static void RpcInStop(RpcIn *in) // IN { ASSERT(in); if (in->nextEvent) { /* The loop is started. Stop it */ #if defined(VMTOOLS_USE_GLIB) if (!in->inLoop) { g_source_destroy(in->nextEvent); } g_source_unref(in->nextEvent); #else EventManager_Remove(in->nextEvent); #endif in->nextEvent = NULL; } if (in->channel) { /* The channel is open */ if (in->mustSend) { /* There is a final result to send back. Try to send it */ RpcInSend(in, 0); ASSERT(in->mustSend == FALSE); } /* Try to close the channel */ if (Message_Close(in->channel) == FALSE) { Debug("RpcIn: couldn't close channel\n"); } in->channel = NULL; } #if defined(VMTOOLS_USE_VSOCKET) if (in->conn != NULL) { if (in->mustSend) { /* There is a final result to send back. Try to send it */ RpcInSend(in, 0); } RpcInCloseConn(in->conn); } if (in->heartbeatSrc != NULL) { g_source_destroy(in->heartbeatSrc); g_source_unref(in->heartbeatSrc); in->heartbeatSrc = NULL; } #endif }
Bool RpcOut_stop(RpcOut *out) // IN { Bool status; ASSERT(out); status = TRUE; if (out->channel) { /* Try to close the channel */ if (Message_Close(out->channel) == FALSE) { Debug("RpcOut: couldn't close channel\n"); status = FALSE; } out->channel = NULL; } return status; }