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).
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);

Related concepts
User-defined Input nodes
User-defined message processing nodes
User-defined output nodes

Related tasks
Creating an input node in C
Creating a message processing node in C

Related reference
C language node utility functions
cniCreateMessage
cniCreateOutputTerminal
cniDeleteMessage
cniEvaluate
cniFinalize
cniGetEnvironmentMessage
cniGetMessageContext
cniIsTerminalAttached