cniRun

此函数声明节点作为输入节点。消息处理或输出节点不会使用它,而且您不需要调用 cniEvaluateWebSphere Message Broker 分配线程并在该线程上调用此函数。

在其中定义 类型 成员
CNI_VFT 有条件的 iFpRun

语法

int cniRun(                       
  CCiContext* context,
  CCiMessage* destinationList,
    CciMessage* exceptionList,          
    CciMessage* message                 
);

参数

context
节点实例上下文的地址,由节点创建并由 cniCreateNodeContext 函数(输入)返回。
destinationList
输入目标列表对象的地址(输入)。
exceptionList
消息异常列表的地址(输入)。
message
要附加数据的消息对象的地址(输入)。

通过调用 cniSetInputBuffer 用户定义的节点可以将位流与此消息关联。 不支持填充此消息的树,因此调用如 cniAddAsLastChildcniCreateElementAsLastChildFromBitstream 这样的函数将无效。要构建树的各个部分,而不是提供要解析的缓冲区来作为整个消息,您应该使用 cniCreateMessage 来创建新消息。

例如,如果您有一个位流,要将它用作消息的有效内容部分,而且您还要添加一个头,则您应该完成以下步骤:
  1. 使用 cniCreateMessage 来创建新消息。
  2. 通过使用语法元素访问实用程序函数(例如,cniCreateElementAsLastChildUsingParser)并传递到此新消息的根元素中,在此新消息中创建头部分。
  3. 通过使用函数(如 cniCreateElementAsLastChild)来将字段添加到头中。
  4. 通过调用 cniCreateElementAsLastChildFromBitstream 并传递到此新消息的根元素中,创建消息的主体。

返回值

此函数由代理调用作为循环的一部分。返回值的含义如下所示:

CCI_TIMEOUT
输入节点不接收其输入数据,并且在请求重新配置消息流时,它要求将该控制权返回到 WebSphere Message Broker。用户定义的输入节点应该经常合理的将控制权返回到 WebSphere Message Broker
CCI_SUCCESS_CONTINUE
成功处理了消息。WebSphere Message Broker 执行缺省事务提交处理。立即调用输入节点的 cniRun 实施函数,以便节点可以继续处理。
CCI_SUCCESS_RETURN
已经成功处理的消息。WebSphere Message Broker 执行缺省事务提交处理。输入节点已经确定不需要线程,并且将它返回到消息流线程池。如果在唯一的线程或最后一个活动的线程上执行此操作,则 WebSphere Message Broker 阻止将此最后的线程返回到池,否则将没有其他的活动线程可以分派另一个线程。在这种情况下,WebSphere Message Broker 立即调用 cniRun 实施函数,就好象返回了 CCI_SUCCESS_CONTINUE。
CCI_FAILURE_CONTINUE
在消息处理中检测到错误,并且节点请求执行事务回滚处理。立即调用输入节点的 cniRun 实施函数。
CCI_FAILURE_RETURN
在消息处理中检测到错误,并且节点请求执行事务回滚处理。然而,输入节点已经确定不需要线程并且可以将它返回到消息流线程池。如果在最后一个活动的线程上执行此操作,则 WebSphere Message Broker 阻止将此最后的线程返回到池,否则将没有其他的活动线程可以分派另一个线程。 在这种情况下,WebSphere Message Broker 立即调用 cniRun 实施函数,就好象返回了 CCI_FAILURE_CONTINUE。
相关参考
C 节点实施函数
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
as07480_