クラス org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRoundRobin

org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRoundRobinに対する継承グラフ

Inheritance graph
[凡例]
org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRoundRobinのコラボレーション図

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

説明

Chooses the number of nodes nodes for error checking using a round-robin algorithm.

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

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

Public メソッド

 ErrorCheckingRoundRobin (int numberOfNodes)
ArrayList getBackends (ArrayList backends) throws ErrorCheckingException
String getInformation ()
int getNumberOfNodes ()
void setNumberOfNodes (int numberOfNodes)
int getPolicy ()
void setPolicy (int policy)
String getXml ()

Static Public 変数

final int RANDOM = 0
final int ROUND_ROBIN = 1
final int ALL = 2

Protected 変数

int nbOfNodes = 0
int policy

Private 変数

int index = 0


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

org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRoundRobin.ErrorCheckingRoundRobin int  numberOfNodes  ) 
 

Creates a new ErrorCheckingRoundRobin instance.

引数:
numberOfNodes number of nodes

ErrorCheckingRoundRobin.java48 行で定義されています。

00049   {
00050     super(ErrorCheckingPolicy.ROUND_ROBIN, numberOfNodes);
00051   }


メソッド

ArrayList org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRoundRobin.getBackends ArrayList  backends  )  throws ErrorCheckingException [virtual]
 

参照:
org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.getBackends(ArrayList)

org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicyに実装されています.

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

参照先 org.objectweb.cjdbc.controller.backend.DatabaseBackend.isReadEnabled, と org.objectweb.cjdbc.controller.backend.DatabaseBackend.isWriteEnabled.

00058   {
00059     int size = backends.size();
00060 
00061     if (nbOfNodes == 0)
00062       return null;
00063     else if (nbOfNodes == size)
00064       return backends;
00065 
00066     ArrayList result = new ArrayList(nbOfNodes);
00067     ArrayList clonedList = new ArrayList(size);
00068     for (int i = 0; i < size; i++)
00069     { // Take all enabled backends
00070       DatabaseBackend db = (DatabaseBackend) backends.get(i);
00071       if (db.isReadEnabled() || db.isWriteEnabled())
00072         clonedList.add(db);
00073     }
00074 
00075     int clonedSize = clonedList.size();
00076 
00077     if (nbOfNodes == clonedSize)
00078       return backends;
00079     else if (nbOfNodes > clonedSize)
00080       throw new ErrorCheckingException(
00081         "Asking for more backends ("
00082           + nbOfNodes
00083           + ") than available ("
00084           + clonedSize
00085           + ")");
00086 
00087     synchronized (this)
00088     { // index must be modified in mutual exclusion
00089       for (int i = 0; i < nbOfNodes; i++)
00090       {
00091         index = (index + 1) % clonedSize;
00092         result.add(clonedList.remove(index));
00093       }
00094     }
00095 
00096     return result;
00097   }

String org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRoundRobin.getInformation  )  [virtual]
 

参照:
org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.getInformation()

org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicyに実装されています.

ErrorCheckingRoundRobin.java102 行で定義されています。

00103   {
00104     return "Error checking using "
00105       + nbOfNodes
00106       + " nodes choosen using a round-robin algorithm";
00107   }

int org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.getNumberOfNodes  )  [inherited]
 

Returns the number of nodes.

戻り値:
an int value
参照:
setNumberOfNodes

ErrorCheckingPolicy.java71 行で定義されています。

00072   {
00073     return nbOfNodes;
00074   }

int org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.getPolicy  )  [inherited]
 

Returns the policy.

戻り値:
an int value
参照:
setPolicy

ErrorCheckingPolicy.java98 行で定義されています。

00099   {
00100     return policy;
00101   }

String org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.getXml  )  [inherited]
 

Convert this error checking policy to xml

戻り値:
xml formatted string

ErrorCheckingPolicy.java137 行で定義されています。

00139   {
00140     StringBuffer info = new StringBuffer();
00141     info.append(
00142       "<"
00143         + DatabasesXmlTags.ELT_ErrorChecking
00144         + " />"
00145         + DatabasesXmlTags.ATT_numberOfNodes
00146         + "=\""
00147         + this.getNumberOfNodes()
00148         + "\" "
00149         + DatabasesXmlTags.ATT_policy
00150         + "=\"");
00151     switch (policy)
00152     {
00153       case RANDOM :
00154         info.append(DatabasesXmlTags.VAL_random);
00155       case ROUND_ROBIN :
00156         info.append(DatabasesXmlTags.VAL_roundRobin);
00157       case ALL :
00158         info.append(DatabasesXmlTags.VAL_all);
00159       default :
00160         }
00161     info.append("\"/>");
00162     return info.toString();
00163   }

void org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.setNumberOfNodes int  numberOfNodes  )  [inherited]
 

Sets the number of nodes.

引数:
numberOfNodes the number of nodes to set
参照:
getNumberOfNodes

ErrorCheckingPolicy.java82 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.ErrorCheckingPolicy().

00083   {
00084     if (numberOfNodes < 3)
00085       throw new IllegalArgumentException(
00086         "You must use at least 3 nodes for error checking ("
00087           + numberOfNodes
00088           + " is not acceptable)");
00089     this.nbOfNodes = numberOfNodes;
00090   }

void org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.setPolicy int  policy  )  [inherited]
 

Sets the policy.

引数:
policy the policy to set
参照:
getPolicy

ErrorCheckingPolicy.java109 行で定義されています。

参照元 org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.ErrorCheckingPolicy().

00110   {
00111     this.policy = policy;
00112   }


変数

final int org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.ALL = 2 [static, inherited]
 

Request is sent to all backends.

ErrorCheckingPolicy.java46 行で定義されています。

int org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingRoundRobin.index = 0 [private]
 

Round-robin index.

ErrorCheckingRoundRobin.java41 行で定義されています。

int org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.nbOfNodes = 0 [protected, inherited]
 

Number of nodes that are involved in error-checking per request.

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

int org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.policy [protected, inherited]
 

ErrorCheckingPolicy.java51 行で定義されています。

final int org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.RANDOM = 0 [static, inherited]
 

Pickup backends randomly.

ErrorCheckingPolicy.java40 行で定義されています。

final int org.objectweb.cjdbc.controller.loadbalancer.policies.errorchecking.ErrorCheckingPolicy.ROUND_ROBIN = 1 [static, inherited]
 

Backends are chosen using a round-robin algorithm.

ErrorCheckingPolicy.java43 行で定義されています。


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