public abstract class MessageTask
extends java.lang.Object
implements java.lang.Runnable
| Modifier and Type | Class and Description |
|---|---|
protected static class |
MessageTask.Request |
static class |
MessageTask.TaskBreak |
| Modifier and Type | Field and Description |
|---|---|
protected static int |
REQUEST_TASK_NON |
protected static int |
REQUEST_TASK_QUIT |
protected static int |
REQUEST_TASK_RUN |
protected static int |
REQUEST_TASK_RUN_AND_WAIT |
protected static int |
REQUEST_TASK_START |
| Constructor and Description |
|---|
MessageTask()
コンストラクタ
プール&キューのサイズは無制限
プールは空で生成
|
MessageTask(int init_num)
コンストラクタ
プール&キューのサイズは無制限
|
MessageTask(int max_request,
int init_num)
コンストラクタ
プール及びキュー可能な最大サイズを指定して初期化
|
| Modifier and Type | Method and Description |
|---|---|
protected boolean |
callOnError(java.lang.Exception e)
エラー処理。
|
protected void |
init(int arg1,
int arg2,
java.lang.Object obj)
初期化要求。
|
boolean |
isFinished() |
boolean |
isRunning() |
protected MessageTask.Request |
obtain(int request,
int arg1,
int arg2,
java.lang.Object obj)
RequestプールからRequestを取得する
プールが空の場合は新規に生成する
|
boolean |
offer(int request)
offer request to run on worker thread
|
boolean |
offer(int request,
int arg1)
offer request to run on worker thread
|
boolean |
offer(int request,
int arg1,
int arg2)
offer request to run on worker thread
|
boolean |
offer(int request,
int arg1,
int arg2,
java.lang.Object obj)
offer request to run on worker thread
|
boolean |
offer(int request,
int arg1,
java.lang.Object obj)
offer request to run on worker thread
|
boolean |
offer(int request,
java.lang.Object obj)
offer request to run on worker thread
|
java.lang.Object |
offerAndWait(int request,
int arg1,
int arg2,
java.lang.Object obj)
offer request to run on worker thread and wait for result
caller thread is blocked until the request finished running on worker thread
FIXME このメソッドはMessageTaskを実行中のスレッド上で呼び出すとデッドロックする
|
boolean |
offerFirst(int request,
int arg1,
int arg2,
java.lang.Object obj)
offer request to run on worker thread on top of the request queue
|
protected void |
onBeforeStop()
onStopの直前に呼び出される, interruptされた時は呼び出されない
|
protected boolean |
onError(java.lang.Exception e)
メッセージ処理ループ中でのエラー発生時の処理
デフフォルトはtrueを返しメッセージ処理ループを終了する
|
protected abstract void |
onInit(int arg1,
int arg2,
java.lang.Object obj)
初期化処理
|
protected abstract void |
onRelease()
onStop後に呼び出される。
|
protected abstract void |
onStart()
要求処理ループ開始直前に呼ばれる
|
protected abstract void |
onStop()
停止処理, interruptされた時は呼び出されない
|
protected abstract java.lang.Object |
processRequest(int request,
int arg1,
int arg2,
java.lang.Object obj)
要求メッセージの処理(内部メッセージは来ない)
TaskBreakをthrowすると要求メッセージ処理ループを終了する
|
boolean |
queueEvent(java.lang.Runnable task)
request to run on worker thread
|
void |
release()
request terminate worker thread and release all related resources
|
void |
release(boolean interrupt)
request terminate worker thread and release all related resources
|
void |
releaseSelf()
実行中のタスクが終了後開放する
|
void |
removeRequest(int request) |
void |
removeRequest(MessageTask.Request request) |
void |
run() |
protected MessageTask.Request |
takeRequest()
要求メッセージを取り出す処理(要求メッセージがなければブロックされる)
|
void |
userBreak()
processRequest内でメッセージループを非常終了させるためのヘルパーメソッド
単にTaskBreakをthrowするだけ
|
boolean |
waitReady() |
protected static final int REQUEST_TASK_NON
protected static final int REQUEST_TASK_RUN
protected static final int REQUEST_TASK_RUN_AND_WAIT
protected static final int REQUEST_TASK_START
protected static final int REQUEST_TASK_QUIT
public MessageTask()
public MessageTask(int init_num)
init_num - プールするRequestの初期数を指定public MessageTask(int max_request,
int init_num)
max_request - キューの最大サイズを指定init_num - プールするRequestの初期数を指定, max_requestよりも大きければ切り捨てるprotected void init(int arg1,
int arg2,
java.lang.Object obj)
arg1 - arg2 - obj - protected abstract void onInit(int arg1,
int arg2,
java.lang.Object obj)
protected abstract void onStart()
protected void onBeforeStop()
protected abstract void onStop()
protected abstract void onRelease()
protected boolean onError(java.lang.Exception e)
protected abstract java.lang.Object processRequest(int request,
int arg1,
int arg2,
java.lang.Object obj)
throws MessageTask.TaskBreak
MessageTask.TaskBreakprotected MessageTask.Request takeRequest() throws java.lang.InterruptedException
java.lang.InterruptedExceptionpublic boolean waitReady()
public boolean isRunning()
public boolean isFinished()
public void run()
run in interface java.lang.Runnableprotected boolean callOnError(java.lang.Exception e)
e - protected MessageTask.Request obtain(int request, int arg1, int arg2, java.lang.Object obj)
request - minus values and zero are reservedarg1 - arg2 - obj - public boolean offer(int request,
int arg1,
int arg2,
java.lang.Object obj)
request - minus values and zero are reservedarg1 - arg2 - obj - public boolean offer(int request,
int arg1,
java.lang.Object obj)
request - minus values and zero are reservedarg1 - obj - public boolean offer(int request,
int arg1,
int arg2)
request - minus values and zero are reservedarg1 - arg2 - public boolean offer(int request,
int arg1)
request - minus values and zero are reservedarg1 - public boolean offer(int request)
request - minus values and zero are reservedpublic boolean offer(int request,
java.lang.Object obj)
request - minus values and zero are reservedobj - public boolean offerFirst(int request,
int arg1,
int arg2,
java.lang.Object obj)
request - minus values and zero are reservedarg1 - arg2 - public java.lang.Object offerAndWait(int request,
int arg1,
int arg2,
java.lang.Object obj)
request - arg1 - arg2 - obj - public boolean queueEvent(java.lang.Runnable task)
task - public void removeRequest(MessageTask.Request request)
public void removeRequest(int request)
public void release()
public void release(boolean interrupt)
interrupt - trueなら実行中のタスクをinterruptするpublic void releaseSelf()
public void userBreak()
throws MessageTask.TaskBreak
MessageTask.TaskBreak