public class SGNode<E extends Endpoint> extends Object implements NodeObserver
| 修飾子とタイプ | クラスと説明 |
|---|---|
static class |
SGNode.Tile
a class representing single level of the routing table of a skip graph.
|
| コンストラクタと説明 |
|---|
SGNode(SkipGraph<E> sg,
MembershipVector mv,
Comparable<?> rawkey)
create a SGNode instance.
|
| 修飾子とタイプ | メソッドと説明 |
|---|---|
SGNode.Tile |
getDdllNode(int level,
SkipGraph.LvState newstate) |
SkipGraph.SGNodeInfo |
getSGNodeInfo(int level,
MembershipVector mv,
int nTraversed)
指定した level に関連する
SkipGraph.SGNodeInfoを返す. |
SGNode.Tile |
getTile(int level) |
boolean |
onNodeFailure(Collection<Link> failedLinks)
called when node failure is detected by DDLL's node monitor.
|
void |
onRightNodeChange(Link prevRight,
Link newRight,
Object payload)
called when the right link is changed by receiving a SetR message.
|
void |
payloadNotSent(Object payload)
called when the payload given via
Node.setR(Link, int, Link, Link, LinkNum, int, Object)
is not passed to the specified remote node. |
List<Link> |
suppplyLeftCandidatesForFix() |
String |
toString() |
public SGNode(SkipGraph<E> sg, MembershipVector mv, Comparable<?> rawkey)
sg - the SkipGraph instance that manages this nodemv - membership vectorrawkey - the keypublic SkipGraph.SGNodeInfo getSGNodeInfo(int level, MembershipVector mv, int nTraversed)
SkipGraph.SGNodeInfoを返す.
メンバシップベクタの上位ビットが同一であるノードを検索するために
findMatchingNode(int) からRPCで呼ばれる.
自ノードも findMatchingNode実行中の場合,いままでにトラバースしたノード数 traversed が大きい側が勝つ.自ノードが負けた場合,findMatchingNode を実行中のスレッドに通知する.
返り値の SGNodeInfo には以下の情報が格納される.
・me: (level + 1) の自分自身へのリンク
・left: (level + 1) の左リンク
・right: (level + 0) の右リンク.null if the caller cannot traverse
rightward further.
自ノードが削除中の場合,指定されたlevelは削除済みの可能性がある.このときはnullを返す.
自ノードが挿入中で level + 1 Linkがまだない場合,me = null を返す. (level + 0は存在するので,メンバシップベクトルが一致しなければcaller側はrightを使って 検索を継続できることに注意)
level - levelmv - the membership vector of the remote (caller) nodenTraversed - the number of traversed node of the remote nodepublic SGNode.Tile getDdllNode(int level, SkipGraph.LvState newstate)
public SGNode.Tile getTile(int level)
public void onRightNodeChange(Link prevRight, Link newRight, Object payload)
NodeObserveronRightNodeChange インタフェース内 NodeObserverprevRight - the previous right linknewRight - the new right linkpayload - an Object passed with SetR message.Node.setR(Link, int, Link, Link, LinkNum, int, Object)public void payloadNotSent(Object payload)
NodeObserverNode.setR(Link, int, Link, Link, LinkNum, int, Object)
is not passed to the specified remote node.
typically this happens when the SetR request fails.payloadNotSent インタフェース内 NodeObserverpayload - the payload not has been sentpublic boolean onNodeFailure(Collection<Link> failedLinks)
NodeObserveronNodeFailure インタフェース内 NodeObserverfailedLinks - the collection of failed links.public List<Link> suppplyLeftCandidatesForFix()
suppplyLeftCandidatesForFix インタフェース内 NodeObserverCopyright © 2017. All rights reserved.