ONC+ 開発ガイド

RPC 言語で記述されたサービスの例

次のコーディング例は、シンプルな ping プログラムの仕様を示します。


例 B–4 RPC 言語を使用する 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 手続きは含まれません。これは古いクライアントプログラムと互換性を持たせるために便利です。