2.12.1.1 スイッチ要素ルーチンのコーディング

アプリケーションで新しいバッファ・タイプを定義するのは、特別な処理を行うためです。たとえば、アプリケーションで、次のプロセスにバッファを送信する前に、データ圧縮を何度か行うとします。このようなアプリケーションでは、送信前処理ルーチンを記述します。次のリストは、送信前処理ルーチンの宣言を示しています。

送信前処理スイッチ要素のセマンティクスのリスト

long
presend(ptr, dlen, mdlen)
char *ptr;

long dlen, mdlen;
  • ptrは、アプリケーション・データ・バッファを指すポインタです。
  • dlenは、ルーチンに渡すデータの長さです。
  • mdlenは、データが格納されたバッファのサイズです。

送信前処理ルーチンで行うデータ圧縮は、アプリケーションのシステム・プログラマが行います。

ルーチンの処理が正常に終了した場合、同じバッファ内にある圧縮後の送信データの長さが返されます。処理が失敗した場合は、-1が返されます。

プログラマが記述した送信前処理ルーチンには、Cコンパイラが使用できる任意の識別子を付けることができます。たとえば、_mypresendという名前を付けます。

_mypresend圧縮ルーチンを使用する場合、受信側にはそのデータの圧縮を解除する_mypostrecvルーチンが必要です。『Oracle Tuxedo C関数リファレンス』buffer(3c)に示すテンプレートを使用してください。