dc_rpc_set_service_prio
形式
ANSI C ,C++の形式
#include <dcrpc.h> void dc_rpc_set_service_prio(DCLONG prio)
K&R版 C の形式
#include <dcrpc.h> void dc_rpc_set_service_prio(prio) DCLONG prio;
機能
サービス要求のプライオリティを設定します。サービス要求単位でスケジュールプライオリティを制御する場合に呼び出します。この関数で設定したプライオリティは,この関数を再び呼び出すまで更新されません。したがって,同じプライオリティでまとめてサービス要求する場合は,この関数を1回だけ呼び出します。
この関数で指定したプライオリティは,直後に呼び出すdc_rpc_call関数,およびdc_rpc_call_to関数で,スケジュールキューを経由してサーバに通知されます。
この関数を一度も呼び出さない場合の処理は,スケジュールサービスの省略時解釈値である4が,サービス要求のプライオリティとして指定されます。
UAPで値を設定する引数
●prio
サービス要求のスケジュールプライオリティを,0または1から8の範囲で設定します。prioの設定は省略できません。
最も高いプライオリティの値は1で,最も低いプライオリティの値は8です。
0を設定した場合は,スケジュールサービスの省略時解釈となります。
上記以外の値を設定した場合は,dc_rpc_set_service_prio関数は無視されます。
リターン値
dc_rpc_set_service_prio関数のリターン値はありません。
注意事項
-
キュー受信型サーバでは,設定したサービス要求のプライオリティは,サーバUAPのユーザサービス定義に,service_priority_control=Y(プライオリティを制御する)を指定している場合だけ有効です。サービス要求する相手のサーバUAPでプライオリティを制御していない場合は,この関数を呼び出しても無効になります。
-
2回目以降の連鎖RPCでのdc_rpc_call関数,およびdc_rpc_call_to関数と,連鎖RPCを終了させるために呼び出す同期応答型RPCのdc_rpc_call関数(flagsにDCNOFLAGSを設定),およびdc_rpc_call_to関数(flagsにDCNOFLAGSを設定)のサービス要求に対してdc_rpc_set_service_prio関数を呼び出しても無効となります。
-
dc_rpc_call関数,およびdc_rpc_call_to関数は,サービス要求のプライオリティを省略値にリセットしません。サービス要求のプライオリティをリセットする場合は,引数prioに0を設定したdc_rpc_set_service_prio関数を呼び出し直してください。
-
この関数は,リモートAPI機能では使用できません。rapクライアントで発行するdc_rpc_call関数,およびdc_rpc_call_to関数のサービス要求に対して,dc_rpc_set_service_prio関数を呼び出しても無効になります。
使用例
int rc; DCULONG in_len,len; char *buf; /* サービス要求1回目: * プライオリティの指定はなし(スケジュールサービスの省略時解釈) */ rc = dc_rpc_call("SPPG","ECHO","ex1",&in_len,buf,&len,DCNOFLAGS); /* サービス要求2回目:プライオリティ = 8 */ dc_rpc_set_service_prio(8); rc = dc_rpc_call("SPPG","ECHO","ex2",&in_len,buf,&len,DCNOFLAGS); /* サービス要求3回目(連鎖RPC):プライオリティ = 1 */ dc_rpc_set_service_prio(1); rc = dc_rpc_call("SPPG","ECHO","ex3",&in_len,buf,&len,DCRPC_CHAINED); : (連鎖RPC dc_rpc_call(DCRPC_CHAINED) n回繰り返し) : rc = dc_rpc_call("SPPG","ECHO","ex3",&in_len,buf,&len,DCNOFLAGS); /* サービス要求(4+n+1)回目(以降): * プライオリティをリセット(スケジュールサービスの省略時解釈) */ dc_rpc_set_service_prio(0); rc = dc_rpc_call("SPPG","ECHO","ex4",&in_len,buf,&len,DCRPC_NOREPLY);