|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectmy_util.FacilityAgent
アプリケーションを構成する機能を表現する Facility クラスにより制御される機能処理を実装する ための抽象クラスです。このクラスのインスタンスは、Facility に より作成されたスレッド上で実行されます。
他の Facility に送信した要求コマンドの応答を受信するために 応答キューを持ちます。
機能処理を実装するには、このクラスを拡張し以下の 抽象メソッドを定義する必要があります。
init() は、機能が活性化された場合に、初期化処理を行う ために呼び出されます。
process() は、この機能の要求キューから FacilityComannd が 受信された場合に呼び出されます。
suspend() は、機能の並行度が下がった場合に、この FacilityAgent のスレッドを中断するために呼び出されます。 それ以降、 resume() が呼び出されるか terminate() が呼び出される まで中断状態は継続します。
resume() は、機能の並行度が上がった場合に中断状態から 復帰するために呼び出されます。
terminate() は、機能が非活性にされた場合に、終了処理を 行うために呼び出されます。
これらのメソッドが異常終了した場合、ただちにこの FacilityAgent の スレッドは停止されます。また、割込み例外 InterruptedException あるいは process() がタイムアウト例外 TimeoutException を throw した場合にも、この FacilityAgent のスレッドはただちに停止します。 その際、ログ出力先に FATAL ログ・レベルのメッセージを出力します。
Facility
,
FacilityAgentControlBlock
,
Message
,
Log
,
Loggable
フィールドの概要 | |
protected static int |
EXCEPTION_IN_GET_INTERRUPT_CAUSE
内部エラー: 割込み原因の取得中に例外が発生した場合 |
protected static int |
EXCEPTION_IN_GET_NOW_CONCURRENCY
内部エラー: 機能の並行度の取得中に例外が発生した場合 |
protected static int |
EXCEPTION_IN_GET_REQUEST
内部エラー: 要求取得フェーズで例外が発生した場合 |
protected static int |
EXCEPTION_IN_INIT_PHASE
内部エラー: 初期化フェーズで例外が発生した場合 |
protected static int |
EXCEPTION_IN_PROCESS
内部エラー: 要求処理フェーズで例外が発生した場合 |
protected static int |
EXCEPTION_IN_RESUME
内部エラー: 復帰フェーズで例外が発生した場合 |
protected static int |
EXCEPTION_IN_SUSPEND
内部エラー: 中断フェーズで例外が発生した場合 |
protected static int |
EXCEPTION_IN_TERMINATE
内部エラー: 停止フェーズで例外が発生した場合 |
protected static int |
EXCEPTION_IN_ZOMBINATE
内部エラー: 終了フェーズで例外が発生した場合 |
protected java.lang.Exception[] |
fatal_exception
停止処理の原因となった例外。 |
protected int |
fatal_exception_cnt
停止原因の例外の数 |
protected static int |
GET_REQUEST_RETURNED_NULL
内部エラー: 要求キューからのコマンド受信が異常終了した場合 |
protected int[] |
halt_cause
停止処理の原因を示すエラーコード。 |
protected static int |
ILLEGAL_STATUS
内部エラー: 不正な状態でスレッドが実行 (start()) された場合 |
protected static int |
INIT_RETURNED_FALSE
内部エラー: init() が異常終了した場合 |
protected FacilityCommand |
last_command
最後に受信した要求コマンド |
protected static int |
NORMALEND
正常終了 |
protected Message |
resq
他の Facility へ送信した要求コマンドの応答を受け付ける応答キュー |
protected static int |
RESUME_RETURNS_FALSE
内部エラー: resume() が異常終了した場合 |
protected static int |
SUSPEND_RETURNS_FALSE
内部エラー: suspen() が異常終了した場合 |
protected static int |
TERMINATE_RETURNED_FALSE
内部エラー: terminate() が異常終了した場合 |
protected static int |
TIMEOUTED_IN_PROCESS
内部エラー: 要求処理フェーズでタイムアウト例外が発生した場合 |
protected java.lang.Object |
wait_channel
最後に入出力を行ったオブジェクト |
コンストラクタの概要 | |
protected |
FacilityAgent()
コンストラクタ |
メソッドの概要 | |
protected void |
create_resq(int resq_len)
このエージェントが応答を受信するキュー resq を作成する |
protected void |
destroy_resq()
このエージェントが応答を受信するキュー resq を破棄する |
FacilityCommand |
get_responce(java.lang.Object cmd,
long timeout)
この FacilityAgent への応答を受信します。 |
java.lang.String |
getAgname()
エージェント名称を取得する |
int |
getAid()
エージェント ID を取得する |
java.lang.String |
getFacname()
機能名称を取得する |
abstract boolean |
init()
初期化処理を実装するための抽象メソッドです。 |
protected void |
log(int log_class,
int errcode,
java.lang.String msg)
機能のログ・メッセージを出力します。 |
abstract int |
process(FacilityCommand req)
要求コマンド処理を実装するための抽象メソッドです。 |
boolean |
put_request(java.lang.String to_fac,
java.lang.Object buf,
long timeout)
要求コマンドを送信します。 |
FacilityCommand |
request(java.lang.String to_fac,
java.lang.Object buf,
long timeout)
要求コマンド FacilityCommand を送信し、その応答を受信します。 |
boolean |
responce(java.lang.Object buf,
long timeout)
要求コマンドで示された応答先のキューに、処理の結果を送信します。 |
abstract boolean |
resume()
中断状態からの復帰処理を実装するための抽象メソッドです。 |
void |
run()
FacilityAgent のメインループ |
void |
setAgname(java.lang.String agname)
エージェント名称を設定する |
void |
setAid(int aid)
エージェント ID を設定する |
void |
setFacname(java.lang.String facname)
機能名称を設定する |
abstract boolean |
suspend()
中断処理を実装するための抽象メソッドです。 |
abstract boolean |
terminate()
停止処理を実装するための抽象メソッドです。 |
protected boolean |
timer_cancel(TimerCommand tc)
TimerUser インタフェースを実装した FacilityAgent が開始した タイマを取り消します。 |
protected boolean |
timer_start(TimerCommand tc)
TimerUser インタフェースを実装した FacilityAgent が利用する、 タイマを開始します。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
protected java.lang.Object wait_channel
protected FacilityCommand last_command
protected static final int NORMALEND
protected static final int ILLEGAL_STATUS
protected static final int INIT_RETURNED_FALSE
protected static final int EXCEPTION_IN_INIT_PHASE
protected static final int EXCEPTION_IN_GET_INTERRUPT_CAUSE
protected static final int EXCEPTION_IN_GET_NOW_CONCURRENCY
protected static final int SUSPEND_RETURNS_FALSE
protected static final int EXCEPTION_IN_SUSPEND
protected static final int RESUME_RETURNS_FALSE
protected static final int EXCEPTION_IN_RESUME
protected static final int GET_REQUEST_RETURNED_NULL
protected static final int EXCEPTION_IN_GET_REQUEST
protected static final int TIMEOUTED_IN_PROCESS
protected static final int EXCEPTION_IN_PROCESS
protected static final int TERMINATE_RETURNED_FALSE
protected static final int EXCEPTION_IN_TERMINATE
protected static final int EXCEPTION_IN_ZOMBINATE
protected int[] halt_cause
protected java.lang.Exception[] fatal_exception
protected int fatal_exception_cnt
protected Message resq
コンストラクタの詳細 |
protected FacilityAgent()
メソッドの詳細 |
public abstract boolean init() throws java.lang.Exception
java.lang.InterruptedException
- 初期化処理中に割込みが発生した
場合。この FacilityAgent の
スレッドは停止しません。
java.lang.Exception
- 初期化処理中に割込み以外の例外が発生した
場合、この FacilityAgent のスレッドは
terminate() を呼び出さずに停止します。public abstract boolean suspend() throws java.lang.Exception
java.lang.InterruptedException
- 中断処理中に割込みが発生した
場合。この FacilityAgent の
スレッドは停止しません。
java.lang.Exception
- 中断処理中に割込み以外の例外が発生した
場合、この FacilityAgent のスレッドは
terminate() を呼び出して停止します。public abstract boolean resume() throws java.lang.Exception
java.lang.InterruptedException
- 復帰処理中に割込みが発生した
場合。この FacilityAgent の
スレッドは停止しません。
java.lang.Exception
- 復帰処理中に割込み以外の例外が発生した
場合、この FacilityAgent のスレッドは
terminate() を呼び出して停止します。public abstract int process(FacilityCommand req) throws java.lang.Exception
NORMALEND
-- 要求コマンド処理に成功した
場合TimeoutException
- 要求コマンド処理中にタイムアウトが
発生した場合。この FacilityAgent の
スレッドは停止しません。
java.lang.InterruptedException
- 要求コマンド処理中に割込みが発生
した場合。この FacilityAgent の
スレッドは停止しません。
java.lang.Exception
- 要求コマンド処理中にタイムアウトまたは割込み
以外の例外が発生した場合、この FacilityAgent
のスレッドは terminate() を呼び出して停止
します。public abstract boolean terminate() throws java.lang.Exception
java.lang.Exception
- 停止処理中に例外が発生した場合。public void setFacname(java.lang.String facname)
public java.lang.String getFacname()
public void setAid(int aid)
public int getAid()
public void setAgname(java.lang.String agname)
public java.lang.String getAgname()
protected void create_resq(int resq_len)
resq
を作成する
resq_len
- キューの長さprotected void destroy_resq()
resq
を破棄する
public boolean responce(java.lang.Object buf, long timeout) throws NotRunningFacilityAgentException, TimeoutException, java.lang.InterruptedException, java.lang.Exception
buf
- 応答コマンド。FaclityCommand であること。timeout
- タイムアウト時間をミリ秒精度で指定する
NotRunningFacilityAgentException
- 応答先の FacilityAgent が停止している場合
TimeoutException
- タイムアウトが発生した場合
java.lang.InterruptedException
- 割込みが発生した場合
java.lang.Exception
- 1) 応答先 FacilityAgent が存在しない
2) 応答先 FacilityAgent の取得に失敗
3) 応答先 FacilityAgentControlBlock のロック
獲得/開放に失敗
4) 応答先 FacilityAgentControlBlock が存在
しない
5) 応答先 FacilityAgent の応答キューが存在
しないpublic boolean put_request(java.lang.String to_fac, java.lang.Object buf, long timeout) throws InactiveFacilityException, TimeoutException, java.lang.InterruptedException, java.lang.Exception
to_fac
- 送信先の機能名称buf
- 要求コマンド。FaclityCommand であることtimeout
- タイムアウト時間をミリ秒で指定する
InactiveFacilityException
- 送信先の機能が非活性の場合
TimeoutException
- タイムアウトが発生した場合
java.lang.InterruptedException
- 割込みが発生した場合
java.lang.Exception
- 1) 送信先の機能が存在しない場合
2) 送信先機能のロック獲得/開放に
失敗した場合
3) 送信先機能の要求キューが存在
しない場合public FacilityCommand get_responce(java.lang.Object cmd, long timeout) throws FailedProcessingException, TimeoutException, java.lang.InterruptedException, java.lang.Exception
cmd
- 応答に対応する要求コマンド FacilityAgenttimeout
- タイムアウト時間をミリ秒精度で指定します (msec)
FailedProcessingException
- 要求コマンド受信側で処理に失敗した場合
TimeoutException
- タイムアウトが発生した場合
java.lang.InterruptedException
- 割込みが発生した場合
java.lang.Exception
- cmd が null の場合public FacilityCommand request(java.lang.String to_fac, java.lang.Object buf, long timeout) throws java.lang.Exception
to_fac
- 要求送信先の昨日名称buf
- 要求コマンド FacilityCommandtimeout
- タイムアウト時間をミリ秒精度で指定する (msec)
java.lang.Exception
- put_request(java.lang.String, java.lang.Object, long)
および
get_responce(java.lang.Object, long)
を参照のことprotected void log(int log_class, int errcode, java.lang.String msg)
log_class
- ログ・レベルを指定します。Log クラスを参照のことerrcode
- エラー・コードを指定しますmsg
- エラー・メッセージを指定しますprotected boolean timer_start(TimerCommand tc) throws java.lang.Exception
tc
- タイマ機能に登録するタイムアウト設定
java.lang.Exception
- -- TimerUser を実装していない
エージェントが呼び出した場合protected boolean timer_cancel(TimerCommand tc) throws java.lang.Exception
tc
- タイマ機能に登録したタイムアウト設定
java.lang.Exception
- -- TimerUser を実装していない
エージェントが呼び出した場合public void run()
java.lang.Runnable
内の run
|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |