diff options
Diffstat (limited to 'same/src/main/java/com')
| -rw-r--r-- | same/src/main/java/com/orbekk/same/MasterServiceImpl.java | 17 | 
1 files changed, 8 insertions, 9 deletions
diff --git a/same/src/main/java/com/orbekk/same/MasterServiceImpl.java b/same/src/main/java/com/orbekk/same/MasterServiceImpl.java index ced0dba..dc5eed3 100644 --- a/same/src/main/java/com/orbekk/same/MasterServiceImpl.java +++ b/same/src/main/java/com/orbekk/same/MasterServiceImpl.java @@ -24,24 +24,22 @@ public class MasterServiceImpl implements MasterService, UrlReceiver, Runnable {      }      @Override -    public void joinNetworkRequest(String clientUrl) { +    public synchronized void joinNetworkRequest(String clientUrl) {          logger.info("JoinNetworkRequest({})", clientUrl);          List<String> participants = participants();          if (!participants.contains(clientUrl)) {              participants.add(clientUrl);              _fullStateReceivers.add(clientUrl); -            synchronized(this) { -                state.updateFromObject(".participants", participants, -                        state.getRevision(".participants") + 1); -                notifyAll(); -            } +            state.updateFromObject(".participants", participants, +                    state.getRevision(".participants") + 1); +            notifyAll();          } else {                              logger.warn("Client {} already part of network. " +                      "Ignoring participation request", clientUrl);          }      } -    public boolean _sendUpdatedComponents() { +    boolean _sendUpdatedComponents() {          boolean worked = false;          for (final Component component : state.getAndClearUpdatedComponents()) {              logger.info("Broadcasting new component {}", component); @@ -57,11 +55,12 @@ public class MasterServiceImpl implements MasterService, UrlReceiver, Runnable {          return list;      } -    public synchronized boolean _sendFullState() { +    synchronized boolean _sendFullState() {          boolean hasWork = _fullStateReceivers.size() != 0;          if (hasWork) { +            logger.info("Sending full state to new participants.");              final List<State.Component> components = state.getComponents(); -            broadcastNewComponents(participants(), components); +            broadcastNewComponents(_fullStateReceivers, components);              _fullStateReceivers.clear();          }          return hasWork;  | 
