public class RingNodeService
extends java.lang.Object
implements jadex.bridge.service.types.dht.IRingNodeService, jadex.bridge.service.types.dht.IRingNodeDebugService
Modifier and Type | Field and Description |
---|---|
protected jadex.bridge.IInternalAccess |
agent
The agent.
|
protected Fingertable |
fingertable
The local fingertable
|
protected static long |
FIX_DELAY
Delay in ms between two fixfinger runs
|
protected boolean |
initialized
Flag that indicates whether this Service is already usable.
|
protected java.util.logging.Logger |
logger
The logger.
|
protected jadex.bridge.service.types.dht.IID |
myId
ID of this ring node
|
protected java.lang.String |
overlayId
Ring overlay identifier.
|
protected static long |
RETRY_OTHER_DELAY
Delay in ms to wait before retrying any remote calls
|
protected static long |
RETRY_SEARCH_DELAY
Delay in ms to wait before restarting the search for other ring nodes
|
protected static long |
STABILIZE_DELAY
Delay in ms between two stabilize runs
|
protected java.util.List<jadex.commons.future.SubscriptionIntermediateFuture<jadex.bridge.service.types.dht.RingNodeEvent>> |
subscriptions
Event subscriptions.
|
protected static long |
VERIFY_DELAY
Delay in ms between two stabilize runs
|
Constructor and Description |
---|
RingNodeService(java.lang.String overlayId)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
disableSchedules()
Disable stabilize, fix and search for debug purposes.
|
protected jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> |
findPredecessor_recursive(jadex.bridge.service.types.dht.IID id,
jadex.bridge.service.types.dht.IFinger beginDash,
jadex.bridge.service.types.dht.IRingNodeService beginDashRing) |
protected jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> |
findPredecessor(jadex.bridge.service.types.dht.IID id)
Find the predecessor of a given ID in the ring.
|
jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> |
findSuccessor(jadex.bridge.service.types.dht.IID id)
Find the successor of a given ID in the ring.
|
jadex.commons.future.IFuture<java.lang.Void> |
fixFingers()
Run the fixfingers algorithm.
|
jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> |
getClosestPrecedingFinger(jadex.bridge.service.types.dht.IID id)
Return the finger that preceeds the given ID and is closest to it in the
local finger table.
|
jadex.commons.future.IFuture<java.util.List<jadex.bridge.service.types.dht.IFinger>> |
getFingers()
Returns a List of all fingers.
|
jadex.commons.future.IFuture<java.lang.String> |
getFingerTableString()
Get the finger table as String for debugging purposes.
|
jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IID> |
getId()
Return own ID.
|
java.lang.String |
getOverlayId() |
jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> |
getPredecessor()
Return the predecessor of this node.
|
protected jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IRingNodeService> |
getRingService(jadex.bridge.service.types.dht.IFinger finger)
Get the RingNode service for a given finger entry.
|
jadex.bridge.service.types.dht.IRingApplicationService.State |
getState()
Returns the current state of this ring node.
|
jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> |
getSuccessor()
Return the successor of this node.
|
void |
init(jadex.bridge.service.types.dht.IID id)
Initialize the node with its own id.
|
boolean |
isInitialized()
Gets the initialized flag.
|
jadex.commons.future.IFuture<java.lang.Boolean> |
join(jadex.bridge.service.types.dht.IRingNodeService nDashRing)
Join the ring.
|
jadex.commons.future.IFuture<java.lang.Void> |
notify(jadex.bridge.service.types.dht.IFinger nDash)
Notifies this node about a possible new predecessor.
|
jadex.commons.future.IFuture<java.lang.Void> |
notifyBad(jadex.bridge.service.types.dht.IFinger x)
Notifies this node about another node that may be bad.
|
protected void |
notifySubscribers(jadex.bridge.service.types.dht.RingNodeEvent e)
Notify all subscribers about events.
|
void |
onStart() |
void |
setInitialized(boolean value)
Sets the initialized flag.
|
jadex.commons.future.IFuture<java.lang.Void> |
setPredecessor(jadex.bridge.service.types.dht.IFinger predecessor)
Set the predecessor of this node.
|
jadex.commons.future.IFuture<java.lang.Void> |
stabilize()
Check if my successor is correct.
|
jadex.commons.future.ISubscriptionIntermediateFuture<jadex.bridge.service.types.dht.RingNodeEvent> |
subscribeForEvents()
Subscribes for RingNodeEvents.
|
java.lang.String |
toString() |
protected static final long FIX_DELAY
protected static final long STABILIZE_DELAY
protected static final long VERIFY_DELAY
protected static final long RETRY_SEARCH_DELAY
protected static final long RETRY_OTHER_DELAY
protected jadex.bridge.IInternalAccess agent
protected jadex.bridge.service.types.dht.IID myId
protected Fingertable fingertable
protected java.util.logging.Logger logger
protected java.util.List<jadex.commons.future.SubscriptionIntermediateFuture<jadex.bridge.service.types.dht.RingNodeEvent>> subscriptions
protected java.lang.String overlayId
protected boolean initialized
public void setInitialized(boolean value)
setInitialized
in interface jadex.bridge.service.types.dht.IRingApplicationService
public boolean isInitialized()
isInitialized
in interface jadex.bridge.service.types.dht.IRingApplicationService
public void onStart()
public void init(jadex.bridge.service.types.dht.IID id)
init
in interface jadex.bridge.service.types.dht.IRingNodeDebugService
id
- public java.lang.String getOverlayId()
getOverlayId
in interface jadex.bridge.service.types.dht.IRingNodeService
public jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IID> getId()
getId
in interface jadex.bridge.service.types.dht.IRingApplicationService
public jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> findSuccessor(jadex.bridge.service.types.dht.IID id)
findSuccessor
in interface jadex.bridge.service.types.dht.IRingApplicationService
id
- ID to find the successor of.protected jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> findPredecessor(jadex.bridge.service.types.dht.IID id)
id
- the ID.protected jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> findPredecessor_recursive(jadex.bridge.service.types.dht.IID id, jadex.bridge.service.types.dht.IFinger beginDash, jadex.bridge.service.types.dht.IRingNodeService beginDashRing)
public jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> getSuccessor()
getSuccessor
in interface jadex.bridge.service.types.dht.IRingApplicationService
public jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> getPredecessor()
getPredecessor
in interface jadex.bridge.service.types.dht.IRingApplicationService
getPredecessor
in interface jadex.bridge.service.types.dht.IRingNodeService
public jadex.commons.future.IFuture<java.lang.Void> setPredecessor(jadex.bridge.service.types.dht.IFinger predecessor)
setPredecessor
in interface jadex.bridge.service.types.dht.IRingNodeService
predecessor
- Finger entry of the new predecessor.public jadex.bridge.service.types.dht.IRingApplicationService.State getState()
getState
in interface jadex.bridge.service.types.dht.IRingApplicationService
public jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IFinger> getClosestPrecedingFinger(jadex.bridge.service.types.dht.IID id)
getClosestPrecedingFinger
in interface jadex.bridge.service.types.dht.IRingNodeService
key
- the IDIFinger
The finger that is closest preceeding the given
key.public jadex.commons.future.IFuture<java.lang.Boolean> join(jadex.bridge.service.types.dht.IRingNodeService nDashRing)
join
in interface jadex.bridge.service.types.dht.IRingNodeDebugService
nDashRing
- Another known ringnodepublic jadex.commons.future.ISubscriptionIntermediateFuture<jadex.bridge.service.types.dht.RingNodeEvent> subscribeForEvents()
subscribeForEvents
in interface jadex.bridge.service.types.dht.IRingApplicationService
protected void notifySubscribers(jadex.bridge.service.types.dht.RingNodeEvent e)
e
- public jadex.commons.future.IFuture<java.lang.Void> notify(jadex.bridge.service.types.dht.IFinger nDash)
notify
in interface jadex.bridge.service.types.dht.IRingNodeService
nDash
- possible new predecessorpublic jadex.commons.future.IFuture<java.lang.Void> notifyBad(jadex.bridge.service.types.dht.IFinger x)
notifyBad
in interface jadex.bridge.service.types.dht.IRingNodeService
x
- possible bad node.public jadex.commons.future.IFuture<java.lang.Void> stabilize()
stabilize
in interface jadex.bridge.service.types.dht.IRingNodeDebugService
public void disableSchedules()
disableSchedules
in interface jadex.bridge.service.types.dht.IRingNodeDebugService
public jadex.commons.future.IFuture<java.lang.Void> fixFingers()
fixFingers
in interface jadex.bridge.service.types.dht.IRingNodeDebugService
public jadex.commons.future.IFuture<java.util.List<jadex.bridge.service.types.dht.IFinger>> getFingers()
getFingers
in interface jadex.bridge.service.types.dht.IRingNodeService
protected jadex.commons.future.IFuture<jadex.bridge.service.types.dht.IRingNodeService> getRingService(jadex.bridge.service.types.dht.IFinger finger)
finger
- public jadex.commons.future.IFuture<java.lang.String> getFingerTableString()
getFingerTableString
in interface jadex.bridge.service.types.dht.IRingNodeDebugService
public java.lang.String toString()
toString
in class java.lang.Object