Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Connector for .NET Framework 使用の手引


2.5.4 インデクスドレコード使用時のバッファの取得と解放

〈この項の構成〉

(1) バッファの取得

RPC要求およびTCP/IP通信にインデクスドレコードを使用する場合のバッファの取得について,次の図に示します。

図2‒29 インデクスドレコード使用時のバッファの取得

[図データ]

  1. アプリケーションからTP1ConnectionManagerクラスのGetMessageBufferメソッドを呼び出して,メッセージバッファを生成します。

    GetMessageBufferメソッドのパラメタには,メッセージバッファに取得するバッファに設定する入力メッセージまたは応答メッセージのメッセージ長を指定してください。

  2. メッセージバッファが保持するバッファに,入力メッセージを設定します。次のどちらかの方法で設定してください。

    • MessageBufferクラスのAppendメソッドを呼び出して,入力メッセージ(バイト配列)を設定してください。

    • MessageBufferクラスのBufferプロパティで,バッファに直接入力メッセージを設定します。また,MessageLengthプロパティでメッセージ長を設定してください。

  3. IndexedRecordクラスのAddメソッドを呼び出し,インデクスドレコードのレコード要素としてメッセージバッファを設定してください。

  4. TP1ConnectionクラスまたはTcpipConnectionクラスのExecuteメソッドを呼び出し,RPCまたはTCP/IP通信を実行します。

注※

入力用インデクスドレコードのレコード要素には,複数のメッセージバッファを設定することもできます。その場合は,メッセージ長の合計は1から1048576までの範囲で指定してください。ただし,RPC送受信メッセージの最大長拡張機能を使用する場合,最大サイズには<option>要素のmaxMessageSize属性で指定した値(×1048576バイト)が設定されます。

また,インデクスドレコードに設定したバッファのほかに,これらのメッセージ長の合計長のメッセージが格納できるバッファがRPCまたはTCP/IP通信の実行時にConnector .NETの内部で使用されます。そのため,バッファ数およびバッファサイズを見積もるときはこの分のバッファも考慮してください。

なお,出力用インデクスドレコードのレコード要素に設定できるメッセージバッファは一つだけです。

(2) バッファの解放

RPC要求またはTCP/IP通信にインデクスドレコードを使用する場合のバッファの解放について,次の図に示します。

図2‒30 インデクスドレコード使用時のバッファの解放

[図データ]

  1. RPC要求またはTCP/IP通信が実行されると,TP1ConnectionクラスまたはTcpipConnectionクラスのExecuteメソッドは,インデクスドレコードに戻り値を返します。

  2. アプリケーションが,インデクスドレコードからメッセージバッファを取り出します。

  3. MessageBufferクラスのBufferプロパティで,応答メッセージを設定します。また,MessageLengthプロパティでメッセージ長を取得してください。

  4. MessageBufferクラスのReleaseMessageBufferメソッドを呼び出すと,メッセージバッファに保持されているバッファがバッファプールに戻されます。

    ReleaseMessageBufferメソッドを呼び出したあとは,メッセージバッファのバッファにはアクセスできません。