Sun Java System Messaging Server 6 2005Q4 MTA Developer's Reference

The process_done() Routine

To assist in cleaning up state information for a thread, callers can provide a routine pointed to by the process_done call argument of mtaDequeueStart().

The following code example shows the required syntax for a process_done() routine.


void process_done(void *ctx2, void *ctx1)

The following table lists the arguments required for a process_done() routine, and gives a description of each.

Required Arguments  

Description  

ctx2

The value of the last pointer stored by process_message() in the ctx2 call argument for this thread.

ctx1

The caller-supplied private context passed as ctx1 to mtaDequeueStart().

The following code example demonstrates the type of actions taken by a process_done routine.


void process_done(ctx2, ctx1)
{
    struct our_state_t *state = (struct our_state_t *)ctx2;
    if (!state)
         return;
    /*
     * Take steps to undo the state
     * (for example, close any sockets or files)
     */
    ...

    /*
     * Free the memory allocated by process_message()
     * to store the state
     */
    free(state)
}