例 B-4 は、単純な ping プログラムの仕様を示します。
/*
* 単純な ping プログラム
*/
program PING_PROG {
version PING_VERS_PINGBACK {
void
PINGPROC_NULL(void) = 0;
/*
* 呼び出し側の ping は、往復時間をミリ秒で返します。
* オペレーションがタイムアウトの場合は、-1 を返します。
*/
int
PINGPROC_PINGBACK(void) = 1;
/* void - 上記は呼び出しへの引き数 */
} = 2;
/*
* オリジナルのバージョン
*/
version PING_VERS_ORIG {
void
PINGPROC_NULL(void) = 0;
} = 1;
} = 200000;
const PING_VERS = 2; /* 最新バージョン */
|
記述された最初のバージョンは、2 つの手続き、PINGPROC_NULL、および PINGPROC_PINGBACK が組み込まれた PING_VERS_PINGBACKです。
PINGPROC_NULL は引数を必要とせず、結果も返しませんが、クライアントとサーバー間の往復時間を計算するときになどに便利です。規則によると、RPC プログラムの手続き 0 はすべて同じセマンティクスを持つことになっているので、認証は必要ありません。
2 番目の手続きは、オペレーションにかかった合計時間を (マイクロ秒で) 返します。
次のバージョンである PING_VERS_ORIG は、プロトコルのオリジナルのバージョンで、PINGPROC_PINGBACK 手続きは含まれません。PING_VERS_ORIG は、古いクライアントプログラムと互換性を持たせる場合に便利ですが、このプログラムが完成すると、プロトコルから完全に削除されることがあります。