cciPropagatedMessageCallback

This is a function that can be registered as a callback and is invoked whenever a message is propagated from one node to another. It is invoked for every message propagated within the execution group where the callback was registered, if the user exit state is active. The callback is registered by providing a pointer to the function as the iFpPropagatedMessageCallback field of the CCI_UE_VFT struct passed to cciRegisterUserExit.

Syntax

typedef void (*cciPropagatedMessageCallback)( 
                                 CciDataContext* userContext,
                                 CciMessage*     message,
                                 CciMessage*     localEnvironment,
                                 CciMessage*     exceptionList,
                                 CciMessage*     environment,
                                 CciConnection*  connection);

Parameters

userContext (input)
This is the value that was passed to the cciRegisterUserExit function.
message
This is a handle to the message object being propagated. The user exit code must not update this tree.
localEnvironment
This is a handle to the local environment object being propagated.
exceptionList
This is a handle to the exception list object being propagated.
environment
This is a handle to the environment object for the current message flow.
connection
This is a handle to the connection object between the two nodes. It can be used, for example, in calls to cciGetSourceNode, cciGetTargetNode, cciGetSourceTerminalName, and cciGetTargetTerminalName. This handle is valid only for the duration of this invocation of the user exit function.

Return values

None.

Example

void myPropagatedMessageCallback(
                        CciMessage*    message,
                        CciMessage*    localEnvironment,
                        CciMessage*    exceptionList,
                        CciMessage*    environment,
                        CciConnection* connection){
 

   int rc = CCI_SUCCESS;
   CciNode* targetNode = cciGetTargetNode(amp rc,
                                          connection);

 

   CciChar targetNodeName [initialStringBufferLength];
   targetNodeNameLength = cciGetNodeName(amp rc,
                                         targetNode,
                                         targetNodeName,
                                         initialStringBufferLength);
   /*you should now check the rc for unexpected values*/
   /*if rc is CCI_BUFFER_TOO_SMALL then you should resize and retry*/

}
Related concepts
Developing user exits
Related tasks
Developing a user exit