/** * Submits internal workitem that will invoke the specified callback function * with the specified parameter */ Bool WKQ_InvokeLater(WorkQueue * q, WorkProc cb, void * par) { Bool ok = False; WorkItem * w = WKI_Create(q, cb, par); if (w) { ok = WKI_Submit(w); WKI_Detach(w); } return ok; }
/** * Submits internal workitem that will invoke the specified callback function * with the specified parameters */ Bool WKQ_InvokeLater2 (WorkQueue * q, WorkProc2 cb, void * p1, void * p2) { Bool ok = False; WorkItem * w = WKI_Create2(q, cb, p1, p2); if (w) { ok = WKI_Submit(w); WKI_Detach(w); } return ok; }
/** * Deallocates the MIDP session context. */ STATIC void GWENG_MidpFree(EcmtGateway* gw, MidpSession* midp) { if (midp) { QEntry* e; VERIFY(HASH_Remove(&gw->midpSessionMap, &midp->key)); HASH_Remove(&gw->ecmtSessionMap, (HashKey)midp->sid); HASH_Destroy(&midp->connMap); WKI_Cancel(midp->xrpcWorkItem); WKI_Detach(midp->xrpcWorkItem); WKQ_Delete(midp->xrpcWorkThread); MUTEX_Destroy(&midp->xrpcMutex); while ((e = QUEUE_RemoveHead(&midp->xrpcQueue)) != NULL) { AsyncXRpcEntry* a = QCAST(e,AsyncXRpcEntry,entry); XRPC_FreeContainer(a->params); MEM_Free(a); } MEM_Free(midp); } }