2.12 バッファのカスタマイズ
Oracle Tuxedoシステムで提供されるバッファ・タイプでは、アプリケーションのニーズが満たされない場合があります。たとえば、アプリケーションがフラットではないデータ構造体、つまりSQLデータベースの問合せのための解析ツリーなど、ほかのデータ構造体へのポインタを持つデータ構造を扱う場合があります。アプリケーション固有の要件に対応するために、Oracle Tuxedoシステムではカスタム・バッファがサポートされています。
バッファをカスタマイズするには、次の表の特性を理解しておく必要があります。
表2-11 カスタム・バッファ・タイプの特性
| 特性 | 説明 | 
|---|---|
|  バッファ・タイプ  | バッファ・タイプの名前。8文字以内の文字列で指定します。 | 
|  バッファ・サブタイプ  | バッファ・サブタイプの名前。16文字以内の文字列で指定します。サブタイプは、特定のタイプのバッファに必要となる処理の違いを示すために使用されます。サブタイプ値としてワイルドカード文字(*)を指定すると、同じ汎用ルーチンを使用して、指定されたタイプのすべてのバッファが処理されます。サブタイプが定義されているバッファは、リスト内でワイルドカードより前に置く必要があります。置かないと、処理が正常に行われません。 | 
|  デフォルト・サイズ  | 対応するバッファ・タイプが割り当てまたは再割り当てされるときの最小サイズ。バッファ・タイプにゼロより大きい適切な値が設定されている場合、バッファを割り当てや再割り当てする際に、バッファ・サイズにゼロを指定できます。 | 
次の表は、各バッファ・タイプに指定する必要があるルーチンを示しています。特定のルーチンが必要ない場合は、NULLポインタを指定します。必要に応じて、Oracle Tuxedoシステムでデフォルトの処理が行われます。
表2-12 カスタム・バッファ・タイプのルーチン
| ルーチン | 説明 | 
|---|---|
|  バッファの初期化  | 新しく割り当てられた型付きバッファを初期化します。 | 
|  バッファの再初期化  | 型付きバッファを再初期化します。このルーチンは、バッファが新しいサイズで再割り当てされたときに呼び出されます。 | 
|  バッファの非初期化  | 型付きバッファを非初期化します。このルーチンは、型付きバッファが解放される直前に呼び出されます。 | 
|  バッファの送信前処理  | 型付きバッファを送るための前処理を行います。このルーチンは、メッセージとして型付きバッファを別のクライアントやサーバーに送信する前に呼び出されます。転送されるデータの長さが返されます。 | 
|  バッファの送信後処理  | 型付きバッファを元の状態に戻します。このルーチンは、メッセージの送信後に呼び出されます。 | 
|  バッファの受信後処理  | アプリケーションで受信された型付きバッファを準備します。アプリケーション・データの長さが返されます。 | 
|  エンコード/デコード  | バッファ・タイプで必要なすべてのエンコードとデコードを行います。入力バッファと出力バッファ、およびその長さと共に、エンコードやデコードのリクエストがルーチンに渡されます。エンコードに使用される形式はアプリケーションで決定され、ほかのルーチンと同じように、バッファ・タイプによって異なる場合があります。 | 
|  ルーティング  | ルーティング情報を指定します。このルーチンは、型付きバッファ、バッファのデータ長、管理者が構成した論理的なルーティング名、およびターゲット・サービスを指定して呼び出されます。この情報に基づいて、アプリケーションでメッセージの送信先サーバー・グループが選択されるか、またはメッセージが不要であることが決定されます。 | 
|  フィルタ  | フィルタ情報を指定します。このルーチンは、型付きバッファに対する式の評価するときに呼び出され、合致したかどうかを返します。型付きバッファがVIEWまたはFMLの場合、FMLブール式が使用されます。イベント・ブローカは、このルーチンを使用してイベントが合致しているかどうかを評価します。 | 
|  フォーマット処理  | 型付きバッファの印字可能な文字列を指定します。 | 
親トピック: 型付きバッファの管理