Skip to content

Commit f6ac212

Browse files
committed
Implemented capability for OortService to broadcast requests to all
nodes, so that the "owner" node can reply without the requesting node being forced to know who is the "owner" node.
1 parent 7981bb2 commit f6ac212

4 files changed

Lines changed: 396 additions & 99 deletions

File tree

cometd-java/cometd-java-oort/src/main/java/org/cometd/oort/OortMasterLong.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,17 +105,20 @@ public boolean getAndAdd(long delta, Callback callback)
105105
}
106106

107107
@Override
108-
protected Long onForward(Object actionData)
108+
protected Result<Long> onForward(Request request)
109109
{
110-
long delta = ((Number)actionData).longValue();
110+
if (!isMaster())
111+
return Result.ignore(0L);
112+
113+
long delta = ((Number)request.getData()).longValue();
111114
long oldValue = value.get();
112115
while (true)
113116
{
114117
if (value.compareAndSet(oldValue, oldValue + delta))
115118
break;
116119
oldValue = value.get();
117120
}
118-
return oldValue;
121+
return Result.success(oldValue);
119122
}
120123

121124
@Override

cometd-java/cometd-java-oort/src/main/java/org/cometd/oort/OortMasterService.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
*/
4747
public abstract class OortMasterService<R, C> extends OortService<R, C>
4848
{
49+
private final boolean master;
4950
private final OortObject<Boolean> nodes;
5051

5152
/**
@@ -56,7 +57,16 @@ public abstract class OortMasterService<R, C> extends OortService<R, C>
5657
public OortMasterService(Oort oort, String name, boolean master)
5758
{
5859
super(oort, name);
59-
nodes = new OortObject<Boolean>(oort, name, OortObjectFactories.forBoolean(master));
60+
this.master = master;
61+
this.nodes = new OortObject<Boolean>(oort, name, OortObjectFactories.forBoolean(master));
62+
}
63+
64+
/**
65+
* @return whether this node is the "master" node
66+
*/
67+
public boolean isMaster()
68+
{
69+
return master;
6070
}
6171

6272
/**

0 commit comments

Comments
 (0)