Class OortMasterLong
- All Implemented Interfaces:
EventListener
,Bayeux.BayeuxListener
,ConfigurableServerChannel.ServerChannelListener
,ServerChannel.MessageListener
,org.eclipse.jetty.util.component.LifeCycle
public class OortMasterLong extends OortMasterService<Long,OortMasterLong.Context>
A distributed counter service to be deployed on a Oort cluster that
modifies a long
value hosted in a "master" 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 OortMasterLong.Callback
object that will be
invoked on the requesting node when the result has been
computed and transmitted back by the "master" node.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
OortMasterLong.Callback
Callback invoked when the result of the operation on the counter is available, or when the operation failed.protected static class
OortMasterLong.Context
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
Nested classes/interfaces inherited from interface org.cometd.bayeux.server.ConfigurableServerChannel.ServerChannelListener
ConfigurableServerChannel.ServerChannelListener.Weak
-
Field Summary
-
Constructor Summary
Constructors Constructor Description OortMasterLong(Oort oort, String name, boolean master)
OortMasterLong(Oort oort, String name, boolean master, long initial)
-
Method Summary
Modifier and Type Method Description boolean
addAndGet(long delta, OortMasterLong.Callback callback)
Adds the givendelta
and then invokes the givencallback
with the counter value after the addition.boolean
get(OortMasterLong.Callback callback)
Retrieves the value from the "master" node and then invokes the givencallback
with the result value.boolean
getAndAdd(long delta, OortMasterLong.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, OortMasterLong.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, OortMasterLong.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.OortMasterService
doStart, doStop, getMasterOortURL, isMaster
Methods inherited from class org.cometd.oort.OortService
forward, getLocalSession, getName, getOort, getTimeout, onForwardMessage, onMessage, onResultMessage, setTimeout, toString
-
Constructor Details
-
OortMasterLong
-
OortMasterLong
- Parameters:
oort
- the oort this instance is associated toname
- the name of this servicemaster
- whether this service lives on the "master" nodeinitial
- the initial local value
-
-
Method Details
-
getValue
protected long getValue()- Returns:
- the local value, which makes sense only if called on the "master" node.
-
get
Retrieves the value from the "master" 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 "master" 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 "master" node
- See Also:
getAndAdd(long, Callback)
-
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 "master" node
- See Also:
addAndGet(long, Callback)
-
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,OortMasterLong.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,OortMasterLong.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,OortMasterLong.Context>
- Parameters:
failure
- the failure of the actioncontext
- the opaque context fromOortService.forward(String, Object, Object)
-