cniPropagate

Propagates a message to a specified terminal object. If the terminal is not attached to another node by a connector, the message is not propagated, and the function is regarded as a no-op. Therefore, it is not necessary to check whether the terminal is attached before propagating the message, unless the action that the node takes would be different (in which case you can use cniIsTerminalAttached to check whether the terminal is connected).

Syntax

int cniPropagate(
  int*          returnCode,
  CciTerminal*  terminalObject,
  CciMessage*   destinationList,
  CciMessage*   exceptionList,
  CciMessage*   message);

Parameters

returnCode
The return code from the function (output).
Possible return codes are:
  • CCI_SUCCESS
  • CCI_EXCEPTION
  • CCI_INV_TERMINAL_OBJECT
  • CCI_INV_MESSAGE_OBJECT
terminalObject
The address of the output terminal to receive the message (input). The address is returned by cniCreateOutputTerminal.
destinationList
The address of the destination list object to be sent with the message (input).

This message object is used by the publish/subscribe node supplied by the message broker.

exceptionList
The address of the exception list for the message (input).
message
The address of the message object to be sent (input). If the message being sent is the same as the input message, this address is the one passed on the cniEvaluate implementation function.

Return values

If successful, CCI_SUCCESS is returned. Otherwise, CCI_FAILURE is returned, and the returnCode parameter indicates the reason for the error.

Example

  if (terminalObject) {
    if (cniIsTerminalAttached(&rc, terminalObject)) {
      if (rc == CCI_SUCCESS) {
        cniPropagate(&rc, terminalObject, destinationList, exceptionList, message);