クラス org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask

org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTaskに対する継承グラフ

Inheritance graph
[凡例]
すべてのメンバ一覧

説明

Defines an abstract task to be processed by a BackendWorkerThread.

作者:
Emmanuel Cecchet
バージョン:
1.0

AbstractTask.java38 行で定義されています。

Public メソッド

 AbstractTask (int nbToComplete, int totalNb)
abstract void execute (BackendWorkerThread backendThread) throws SQLException
synchronized void notifySuccess ()
synchronized boolean notifyFailure (BackendWorkerThread backendThread, long timeout, SQLException e) throws SQLException
ArrayList getExceptions ()
int getFailed ()
int getNbToComplete ()
int getSuccess ()
int getTotalNb ()
void setTotalNb (int totalNb)
boolean hasTid ()
void setHasTid (boolean hasTid)

Private 変数

int totalNb
int nbToComplete
int success = 0
int failed = 0
ArrayList exceptions = null
boolean hasTid = false


コンストラクタとデストラクタ

org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.AbstractTask int  nbToComplete,
int  totalNb
 

Sets the number of threads among the total number of threads that must successfully complete the execution of this AbstractTask before returning.

引数:
nbToComplete number of threads that must succeed before returning
totalNb total number of threads

AbstractTask.java72 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.failed, と org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.success.

00073   {
00074     this.nbToComplete = nbToComplete;
00075     this.totalNb = totalNb;
00076     success = 0;
00077     failed = 0;
00078   }


メソッド

abstract void org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.execute BackendWorkerThread  backendThread  )  throws SQLException [pure virtual]
 

The task code to be executed by backendThread.

引数:
backendThread The backend thread executing this task
例外:
SQLException if an error occurs

org.objectweb.cjdbc.controller.loadbalancer.tasks.BeginTask, org.objectweb.cjdbc.controller.loadbalancer.tasks.CommitTask, org.objectweb.cjdbc.controller.loadbalancer.tasks.KillThreadTask, org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask, org.objectweb.cjdbc.controller.loadbalancer.tasks.RollbackTask, org.objectweb.cjdbc.controller.loadbalancer.tasks.SelectRequestTask, org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask, org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask, と org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTaskを実装しています.

参照元 org.objectweb.cjdbc.controller.loadbalancer.BackendWorkerThread.run().

ArrayList org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getExceptions  ) 
 

Returns the exceptions lists.

戻り値:
an ArrayList

AbstractTask.java167 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.exceptions.

00168   {
00169     return exceptions;
00170   }

int org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getFailed  ) 
 

Returns the failed.

戻り値:
an int value

AbstractTask.java177 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.failed.

参照元 org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.callStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.callStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.commit(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.commit(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.commit(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.execWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.rollback(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.rollback(), と org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.rollback().

00178   {
00179     return failed;
00180   }

int org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getNbToComplete  ) 
 

Returns the number of threads that must succeed before returning.

戻り値:
an int value

AbstractTask.java187 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.nbToComplete.

00188   {
00189     return nbToComplete;
00190   }

int org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getSuccess  ) 
 

Returns the success.

戻り値:
an int value

AbstractTask.java197 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.success.

参照元 org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.callStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.callStoredProcedure(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.commit(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.commit(), org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.commit(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.RollbackTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.CommitTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.execWriteRequest(), org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.rollback(), org.objectweb.cjdbc.controller.loadbalancer.raidb1.RAIDb1.rollback(), と org.objectweb.cjdbc.controller.loadbalancer.raidb0.RAIDb0.rollback().

00198   {
00199     return success;
00200   }

int org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getTotalNb  ) 
 

Returns the total number of threads.

戻り値:
an int value
参照:
setTotalNb

AbstractTask.java208 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.totalNb.

00209   {
00210     return totalNb;
00211   }

boolean org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.hasTid  ) 
 

Returns true if this task has a tid attached to it.

Used internally by BackendWorkerThread.

戻り値:
Returns the hasTid.

AbstractTask.java231 行で定義されています。

00232   {
00233     return hasTid;
00234   }

synchronized boolean org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifyFailure BackendWorkerThread  backendThread,
long  timeout,
SQLException  e
throws SQLException
 

Notifies that the specified backendThread failed to execute this task. If all nodes failed, this method return false meaning that the problem was due to the task and not to the thread. If the method returns true, it can mean that this thread failed and is no more coherent, therefore the backend associated to this thread should be disabled.

引数:
backendThread the backend thread that has failed
timeout time in milliseconds to wait for other threads to signal success or failure
e the exception causing the failure
戻り値:
true if at least one node succeeded to execute this task, false if all threads failed
例外:
SQLException if an error occured in the notification process

AbstractTask.java127 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.exceptions, org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.failed, org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.success, と org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.totalNb.

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.SelectRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.RollbackTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.CommitTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.BeginTask.execute(), と org.objectweb.cjdbc.controller.loadbalancer.BackendWorkerThread.kill().

00129   {
00130     failed++;
00131 
00132     // Log the exception
00133     if (exceptions == null)
00134       exceptions = new ArrayList();
00135     exceptions.add(new SQLException("BackendThread "
00136         + backendThread.getBackend().getName() + " failed (" + e + ")"));
00137 
00138     // Notify if needed
00139     if (success + failed == totalNb)
00140     {
00141       notifyAll(); // Notify all failed threads
00142     }
00143     else
00144     {
00145       try
00146       { // Wait to check if all other threads failed or not
00147         wait(timeout);
00148       }
00149       catch (InterruptedException ie)
00150       {
00151         throw new SQLException("Wait interrupted() in failed task of backend "
00152             + backendThread.getBackend().getName() + " (" + e + ")");
00153       }
00154     }
00155     return success > 0;
00156   }

synchronized void org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifySuccess  ) 
 

Notifies the successful completion of this task.

AbstractTask.java96 行で定義されています。

参照先 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.failed, org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.nbToComplete, org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.success, と org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.totalNb.

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestWithKeysTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.WriteRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.SelectRequestTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.RollbackTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.ReadStoredProcedureTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.KillThreadTask.execute(), org.objectweb.cjdbc.controller.loadbalancer.tasks.CommitTask.execute(), と org.objectweb.cjdbc.controller.loadbalancer.tasks.BeginTask.execute().

00098   {
00099     success++;
00100 
00101     // Notify if needed
00102     if ((success == nbToComplete) || (success + failed == totalNb))
00103     {
00104       if (failed > 0)
00105         notifyAll(); // Notify all failed threads too
00106       else
00107         notify();
00108     }
00109   }

void org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.setHasTid boolean  hasTid  ) 
 

Sets the hasTid value.

Used internally by BackendWorkerThread.

引数:
hasTid The hasTid to set.

AbstractTask.java243 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.BackendWorkerThread.addPriorityTask(), と org.objectweb.cjdbc.controller.loadbalancer.BackendWorkerThread.addTask().

00244   {
00245     this.hasTid = hasTid;
00246   }

void org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.setTotalNb int  totalNb  ) 
 

Sets the total number of threads.

引数:
totalNb the total number of threads to set
参照:
getTotalNb

AbstractTask.java219 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.raidb2.RAIDb2.callStoredProcedure().

00220   {
00221     this.totalNb = totalNb;
00222   }


変数

ArrayList org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.exceptions = null [private]
 

AbstractTask.java56 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getExceptions(), と org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifyFailure().

int org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.failed = 0 [private]
 

AbstractTask.java55 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.AbstractTask(), org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getFailed(), org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifyFailure(), と org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifySuccess().

boolean org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.hasTid = false [private]
 

AbstractTask.java59 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.BackendWorkerThread.run().

int org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.nbToComplete [private]
 

Number of threads that must succeed before returning.

AbstractTask.java52 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getNbToComplete(), と org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifySuccess().

int org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.success = 0 [private]
 

AbstractTask.java54 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.AbstractTask(), org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getSuccess(), org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifyFailure(), と org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifySuccess().

int org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.totalNb [private]
 

Total number of threads.

AbstractTask.java49 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.getTotalNb(), org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifyFailure(), と org.objectweb.cjdbc.controller.loadbalancer.tasks.AbstractTask.notifySuccess().


このクラスの説明は次のファイルから生成されました:
CJDBCversion1.0rc6に対してWed May 5 18:02:45 2004に生成されました。 doxygen 1.3.6