dc_mcf_timer_set
名称
ユーザタイマ監視の設定
形式
ANSI C,C++の形式
#include <dcmcf.h>
int dc_mcf_timer_set(DCLONG flags,DCLONG timer,DCLONG timer_id,
char *lename,
char *apname,char *data,DCLONG data_leng,
DCLONG resv01,DCLONG resv02)
K&R版 C の形式
#include <dcmcf.h>
int dc_mcf_timer_set(flags, timer, timer_id, lename,
apname, data,
data_leng, resv01, resv02)
DCLONG flags;
DCLONG timer;
DCLONG timer_id;
char *lename;
char *apname;
char *data;
DCLONG data_leng;
DCLONG resv01;
DCLONG resv02;
機能
ユーザで任意の時間監視をするには,UAPからdc_mcf_timer_set関数でユーザタイマ監視を設定します。この関数を呼び出すには,MCF通信構成定義mcfttimの-pオプションにusertime=yesを指定する必要があります。
dc_mcf_timer_set関数は,ユーザサーバからだけ呼び出せます。
timerに指定した時間(単位:秒)を経過した(タイムアウトが発生した)場合,lenameで指定した論理端末からイベントを生成し,apnameに設定したアプリケーション名のMHPを起動させます。lenameはUAPがMHPのときに限り省略できます。省略した場合,入力元論理端末を仮定します。
タイムアウト発生時に起動させるMHPは,非応答型(noans型)のMHPでなくてはなりません。このMHPにメッセージが渡されたときの形式は「dc_mcf_receive」を参照してください。
dc_mcf_timer_set関数で設定したユーザタイマ監視は,同一のtimer_idおよびlenameを指定したdc_mcf_timer_cancel関数を呼び出すことで取り消せます。
時間監視は,dc_mcf_timer_set関数を呼び出した直後から行います。
同時に時間監視できる数は,MCF通信構成定義 mcfttimの-pオプションのtimereqnoオペランドに指定した最大タイマ監視要求数までです。
UAPで値を設定する引数
●flags
DCNOFLAGSを設定します。
●timer
dc_mcf_timer_set関数を呼び出してから,何秒後にMHPを起動させるかを設定します。設定できる秒数は,1から360000まで(1秒から100時間まで)です。
一定の時間間隔でタイムアウトが発生したかどうかを監視しているので,timerに指定した時間と実際のタイムアウト検出までの時間には誤差が生じます。時間監視の精度は,MCF通信構成定義 mcfttimの-tオプションのbtimオペランドに指定した時間監視間隔の値に依存します。
●timer_id
タイマ要求識別子を設定します。
timer_idはこのタイマを一意に識別するための情報です。timer_idは,lenameで指定した論理端末内で必ずユニークになるようにしてください。
●lename
タイムアウトが発生したときにイベントを生成する論理端末名称を8バイト以内で指定します。論理端末名称の最後にはヌル文字を付けます。省略する場合には,ヌル文字を指定します。省略した場合,入力元論理端末を仮定します。
●apname
起動させるMHPのアプリケーション名を指定します。このアプリケーションの属性は,lenameで指定した論理端末を持つMCF通信サーバのMCF通信構成定義mcftenv -aオプションで指定したMCFアプリケーション定義内のアプリケーション属性定義(mcfaalcap)に定義してください。アプリケーション名は最大8バイトです。アプリケーション名の最後にはヌル文字を付けます。MHPは非応答型(noans型)のMHPでなければなりません。指定するアプリケーション名はユーザイベントでなければなりません。
●data
起動させるMHPに渡す,メッセージのセグメントの内容を設定します。複数のセグメントを設定できません。起動させるMHPに渡すセグメントがない場合は,ヌル文字を設定します。
●data_leng
起動させるMHPに渡すセグメントの長さを設定します。起動させるMHPに渡すセグメントがない場合は,0を設定します。
設定できる値の範囲は,0~256です。設定できる値の最大値はMCF通信構成定義 mcfttimの-pオプションのmsgsizeオペランドに指定した最大メッセージ長に依存します。
●resv01
DCNOFLAGSを設定します。
●resv02
DCNOFLAGSを設定します。
リターン値
リターン値 | リターン値(数値) | 意味 |
---|---|---|
DC_OK | 0 | 正常に終了しました。 |
DCMCFER_INVALID_ARGS | -11900 | 引数に設定した値が間違っています。 |
DCMCFER_PARAM_TIMER | -11909 | timerに設定した値が間違っています。 |
DCMCFER_PARAM_TIM_ID | -11910 | timer_idに指定したタイマ要求識別子は,すでに登録されています。 |
DCMCFER_PARAM_FLAGS | -11911 | flagsに設定した値が間違っています。 |
DCMCFER_PARAM_LENAME | -11912 | lenameに設定した値が間違っています。 |
DCMCFER_PARAM_APNAME | -11913 | apnameに設定した値が間違っています。 |
DCMCFER_PARAM_LENG | -11914 | data_lengに設定した値が間違っています。 |
DCMCFER_PARAM_DATA | -11915 | dataに設定した値が間違っています。 |
DCMCFER_NO_DEFINE | -11916 | 要求された機能はMCFで定義されていません。 |
DCMCFER_NO_TIMER_ENT | -11917 | タイマ登録領域に空きがないためユーザタイマ監視が設定できません。タイマ登録領域を確保するため,MCF通信構成定義mcfttimの-pオプションのtimereqnoオペランドの値を見直してください。必要に応じて,MCFマネジャ定義mcfmcomnの-pオプション,およびシステム環境定義static_shmpool_sizeオペランドの値を確認してください。 |