Class OortPrimaryLong
- All Implemented Interfaces:
EventListener
,Bayeux.BayeuxListener
,ConfigurableServerChannel.ServerChannelListener
,ServerChannel.MessageListener
,org.eclipse.jetty.util.component.LifeCycle
A distributed counter service to be deployed on a Oort cluster that
modifies a long
value hosted in a "primary" node.
Instances of this service may be used as unique ID generator, or as unique counter across the cluster, for example to aggregate values from different nodes, such as the number of users connected to each node.
Applications may call methods addAndGet(long, Callback)
or
getAndAdd(long, Callback)
providing the amount to add
(it may be negative) and a OortPrimaryLong.Callback
object that will be
invoked on the requesting node when the result has been
computed and transmitted back by the "primary" node.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
Callback invoked when the result of the operation on the counter is available, or when the operation failed.protected static class
Nested classes/interfaces inherited from class org.cometd.oort.OortService
OortService.Request, OortService.Result<U>, OortService.ServerContext
Nested classes/interfaces inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
org.eclipse.jetty.util.component.AbstractLifeCycle.AbstractLifeCycleListener, org.eclipse.jetty.util.component.AbstractLifeCycle.StopException
Nested classes/interfaces inherited from interface org.cometd.bayeux.server.ConfigurableServerChannel.ServerChannelListener
ConfigurableServerChannel.ServerChannelListener.Weak
Nested classes/interfaces inherited from interface org.eclipse.jetty.util.component.LifeCycle
org.eclipse.jetty.util.component.LifeCycle.Listener
-
Field Summary
Fields inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
FAILED, STARTED, STARTING, STOPPED, STOPPING
-
Constructor Summary
ConstructorDescriptionOortPrimaryLong
(Oort oort, String name, boolean primary) OortPrimaryLong
(Oort oort, String name, boolean primary, long initial) -
Method Summary
Modifier and TypeMethodDescriptionboolean
addAndGet
(long delta, OortPrimaryLong.Callback callback) Adds the givendelta
and then invokes the givencallback
with the counter value after the addition.boolean
get
(OortPrimaryLong.Callback callback) Retrieves the value from the "primary" node and then invokes the givencallback
with the result value.boolean
getAndAdd
(long delta, OortPrimaryLong.Callback callback) Adds the givendelta
and then invokes the givencallback
with the counter value before the addition.protected long
getValue()
protected OortService.Result
<Long> onForward
(OortService.Request request) Subclasses must implement this method, that runs on the owner node, to implement the action functionality.protected void
onForwardFailed
(Object failure, OortPrimaryLong.Context context) Subclasses must implement this method, that runs on the requesting node, to complete the functionality after the action failed on the owner node.protected void
onForwardSucceeded
(Long result, OortPrimaryLong.Context context) Subclasses must implement this method, that runs on the requesting node, to complete the functionality after the action has been successfully run on the owner node.Methods inherited from class org.cometd.oort.OortPrimaryService
doStart, doStop, getPrimaryOortURL, isPrimary
Methods inherited from class org.cometd.oort.OortService
forward, getLocalSession, getName, getOort, getTimeout, onForwardMessage, onMessage, onResultMessage, setTimeout, toString
Methods inherited from class org.eclipse.jetty.util.component.AbstractLifeCycle
addEventListener, getEventListeners, getState, getState, isFailed, isRunning, isStarted, isStarting, isStopped, isStopping, removeEventListener, setEventListeners, start, stop
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.cometd.bayeux.server.ServerChannel.MessageListener
onMessage
-
Constructor Details
-
OortPrimaryLong
-
OortPrimaryLong
-
-
Method Details
-
getValue
protected long getValue()- Returns:
- the local value, which makes sense only if called on the "primary" node.
-
get
Retrieves the value from the "primary" node and then invokes the givencallback
with the result value.- Parameters:
callback
- the callback invoked when the result is available- Returns:
- whether the request could be forwarded to the "primary" node
-
addAndGet
Adds the givendelta
and then invokes the givencallback
with the counter value after the addition. The counter value may be already out of date at the moment of the invocation of thecallback
.- Parameters:
delta
- the value to add, may be negativecallback
- the callback invoked when the result is available- Returns:
- whether the request could be forwarded to the "primary" node
- See Also:
-
getAndAdd
Adds the givendelta
and then invokes the givencallback
with the counter value before the addition.- Parameters:
delta
- the value to add, may be negativecallback
- the callback invoked when the result is available- Returns:
- whether the request could be forwarded to the "primary" node
- See Also:
-
onForward
Description copied from class:OortService
Subclasses must implement this method, that runs on the owner node, to implement the action functionality.
The result to return is
OortService.Result.success(Object)
orOortService.Result.failure(Object)
if the implementation of this method was able to find the entity on which the action functionality was meant to be applied, orOortService.Result.ignore(Object)
if the entity was not found.- Specified by:
onForward
in classOortService<Long,
OortPrimaryLong.Context> - Parameters:
request
- the request containing the parameter passed fromOortService.forward(String, Object, Object)
- Returns:
- the result containing the data that will be passed to
OortService.onForwardSucceeded(Object, Object)
-
onForwardSucceeded
Description copied from class:OortService
Subclasses must implement this method, that runs on the requesting node, to complete the functionality after the action has been successfully run on the owner node.- Specified by:
onForwardSucceeded
in classOortService<Long,
OortPrimaryLong.Context> - Parameters:
result
- the result of the actioncontext
- the opaque context fromOortService.forward(String, Object, Object)
-
onForwardFailed
Description copied from class:OortService
Subclasses must implement this method, that runs on the requesting node, to complete the functionality after the action failed on the owner node.- Specified by:
onForwardFailed
in classOortService<Long,
OortPrimaryLong.Context> - Parameters:
failure
- the failure of the actioncontext
- the opaque context fromOortService.forward(String, Object, Object)
-