diff options
| author | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-01-11 12:08:02 +0100 | 
|---|---|---|
| committer | Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com> | 2020-01-11 12:14:43 +0100 | 
| commit | 0fca21f2011958d709a25aa1f4d863c1d646da6e (patch) | |
| tree | 5dba6d80fde59889101ea4210bf4033b53e18a44 /src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java | |
| parent | 89af38da0b95445180440e85bb8248ab910ef9f8 (diff) | |
Send info back from responder
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java')
| -rw-r--r-- | src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java | 25 | 
1 files changed, 22 insertions, 3 deletions
| diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java index 1629914..eafbcca 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/GossipGirlState.java @@ -10,6 +10,7 @@ import java.util.Map;  import java.util.Map.Entry;  import java.util.Set; +import pl.edu.mimuw.cloudatlas.agent.messages.AttributesMessage;  import pl.edu.mimuw.cloudatlas.agent.messages.HejkaMessage;  import pl.edu.mimuw.cloudatlas.agent.messages.NoCoTamMessage;  import pl.edu.mimuw.cloudatlas.model.Attribute; @@ -28,6 +29,7 @@ public class GossipGirlState {          SEND_HEJKA,          SEND_NO_CO_TAM,          SEND_INFO, +        SEND_INFO_AND_FINISH,          WAIT_FOR_NO_CO_TAM,          WAIT_FOR_FIRST_INFO,          WAIT_FOR_INFO, @@ -107,7 +109,6 @@ public class GossipGirlState {      public void handleHejka(HejkaMessage message) {          switch (state) {              case APPLY_HEJKA: -                System.out.println("setting sender gossip id to " + message.getSenderGossipId());                  theirGossipId = message.getSenderGossipId();                  theirZoneTimestamps = message.getZoneTimestamps();                  theirQueryTimestamps = message.getQueryTimestamps(); @@ -262,16 +263,19 @@ public class GossipGirlState {              case SEND_INFO:                  state = State.WAIT_FOR_INFO;                  break; +            case SEND_INFO_AND_FINISH: +                state = State.FINISHED; +                break;              default:                  System.out.println("ERROR: tried to set gossip state when not expected");                  state = State.ERROR;          }      } -    public void gotAttributesFor(PathName path) { +    public void gotAttributes(AttributesMessage message) {          switch (state) {              case WAIT_FOR_INFO: -                if (!waitingForZones.remove(path)) { +                if (!waitingForZones.remove(message.getPath())) {                      System.out.println("DEBUG: got zone attributes we weren't expecting");                  }                  if (waitingForZones.isEmpty() && waitingForQueries.isEmpty()) { @@ -279,6 +283,21 @@ public class GossipGirlState {                      state = state.FINISHED;                  }                  break; +            case WAIT_FOR_FIRST_INFO: +                // TODO: use offset to setup GTP +                setZonesToSend(); +                setQueriesToSend(); +                setWaitingFor(); +                state = State.SEND_INFO; + +                if (!waitingForZones.remove(message.getPath())) { +                    System.out.println("DEBUG: got zone attributes we weren't expecting"); +                } +                if (waitingForZones.isEmpty() && waitingForQueries.isEmpty()) { +                    System.out.println("INFO: done waiting for info"); +                    state = state.SEND_INFO_AND_FINISH; +                } +                break;              default:                  System.out.println("ERROR: got attributes when not expected");                  state = State.ERROR; |