Example #1
0
/**
 * 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;
}
Example #2
0
/**
 * 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;
}
Example #3
0
/**
 * 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);
    }
}