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 は、ユーザー定義のノードの 構成済み属性に値を確立するためにブローカーによって呼び出されます。

この段階で、cniCreateTerminal が呼び出されると CciTerminal 構造が作成されます。

処理

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

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

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

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

破棄

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

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

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

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:44:32

as01391_