C ユーザー定義入力ノードのライフ・サイクル

このトピックは、C プログラミング言語を使って作成されるユーザー定義の入力ノードの存続期間におけるさまざまな段階を説明します。 入力ノードのライフ・サイクルにおける以下の段階について説明します。

登録

登録の段階で、ブローカーはどのリソースが使用可能で、どの LIL がそれらを供給できるかを発見します。この場合、使用可能なリソースはノードです。この段階は実行グループが開始する際に 始まります。LIL は実行グループの始動にロードされ、ブローカーはそれらに照会してどのリソースを LIL が 供給できるかを検出します。

登録段階で、ユーザー定義のノードが cniCreateNodeFactory を呼び出すときに、CciFactory 構造が 作成されます。

次の API が、ブローカーによってこの段階中に呼び出されます。
  • biGetMessageflowNodeFactory
  • bipGetParserFactory
次の API が、ユーザー定義のノードによってこの段階中に呼び出されます。
  • cniCreateNodeFactory

インスタンス化

ユーザー定義の入力ノードのインスタンスは、mqsistart コマンドが実行グループ処理を開始 または再開する場合、またはノードに関連するメッセージ・フローがデプロイされる場合に作成されます。

次の API がこの段階中に呼び出されます。
  • cniCreateNodeContext。この API は、ユーザー定義のノードの インスタンス化用にメモリーを割り振り、構成された属性の値を保留します。 この API はユーザー定義の入力ノードを使用している各メッセージ・フローごとに一度呼び出されます。
  • cniCreateInputTerminal。この API は cniCreateNodeContext API 内で呼び出され、ユーザー定義の入力ノードが持つ入力ターミナルがあればそれを ブローカーに通知するために使用されます。
    注: ユーザー定義の入力ノードは、 メッセージ処理ノードとしても使用されている場合にのみ、入力ターミナルを持ちます。そうである場合、 両方の操作を 1 つのより複雑なノードに結合するよりも、 別のユーザー定義のメッセージ処理ノードを使用してメッセージ処理を行う方が通常は望ましい方法です。
  • cniCreateOutputTerminal。この API は cniCreateNodeContext API 内で呼び出され、ユーザー定義の入力ノードが持つ出力ターミナルを ブローカーに通知するために使用されます。
  • cniSetAttribute。この API は、ユーザー定義のノードの 構成済み属性に値を確立するためにブローカーによって呼び出されます。

この段階中に CciTerminal 構造が作成されます。この作成は cniCreateTerminal が呼び出されるときに 作成されます。

処理

処理段階は、cniRun 関数がブローカーによって呼び出される際に開始します。 ブローカーは cniRun 関数を使用して、メッセージが定義される ドメインの決定、およびそのドメインへの関連パーサーの呼び出しを含む、メッセージの処理方法を 決定します。

スレッドが、メッセージ・フローのスレッド・プールから要求され、入力ノードの run メソッドで開始されます。 スレッドはブローカーのキュー・マネージャーに接続し、その存続期間中この接続を維持します。 スレッドが割り振られると、ノードがメッセージ処理ループに入り、メッセージの受信を待ちます。 これは、メッセージを受信するまでループを繰り返します。メッセージ・フローが複数のスレッドを使用するように構成されている場合、 スレッド・ディスパッチングが活動化されます。

これで、メッセージ・データのダウンストリームへの伝搬が可能になります。

次の API が、ブローカーによってこの段階中に呼び出されます。
  • cniRun。この関数は、 入力メッセージを処理する方法を判別するためブローカーによって呼び出されます。
  • cniSetInputBuffer。この関数は入力バッファーを提供するか、入力バッファーの位置をブローカーに通知し、 そのバッファーをメッセージ・オブジェクトに関連付けます。

破棄

ユーザー定義の入力ノードは、メッセージ・フローの再デプロイ時、または mqsistop が実行グループ処理の停止に使用される場合に破棄されます。cniDeleteNodeContext 関数をインプリメントすることによって、 ノードを破棄できます。

ユーザー定義の入力ノードがこれらの方法のいずれかで破棄される場合、 ノードが使用するメモリーを解放し、ソケットなど保留されていたリソースをリリースする 必要があります。

次の API が、ブローカーによってこの段階中に呼び出されます。
  • cniDeleteNodeContext。この関数は、 入力ノードのインスタンスを破棄するためにブローカーによって呼び出されます。
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2006 最終更新: 08/21/2006
as01391_