diff options
| author | Magdalena GrodziĆska <mag.grodzinska@gmail.com> | 2020-01-10 19:10:54 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-10 19:10:54 +0100 | 
| commit | 69fa53941cfa42f3b0f511f6abe549919241123b (patch) | |
| tree | c2575377b7edeb01b496e6b865b53c943083be8c /src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java | |
| parent | 1b28c8a208c510183479e090f7b8c32f9dadd7c2 (diff) | |
| parent | 1f87c2d319b2671bd2d61feb3a76d102059c4c52 (diff) | |
Merge pull request #90 from m-chrzan/switch_udup_to_remotegosssipgirl
Make UDUP handle only gossip girl messages with its timestamps
Diffstat (limited to 'src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java')
| -rw-r--r-- | src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java | 22 | 
1 files changed, 16 insertions, 6 deletions
diff --git a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java index d6180be..94882e4 100644 --- a/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java +++ b/src/main/java/pl/edu/mimuw/cloudatlas/agent/modules/UDUPServer.java @@ -2,6 +2,7 @@ package pl.edu.mimuw.cloudatlas.agent.modules;  import com.google.common.primitives.Bytes;  import pl.edu.mimuw.cloudatlas.agent.messages.UDUPMessage; +import pl.edu.mimuw.cloudatlas.model.ValueUtils;  import java.io.ByteArrayInputStream;  import java.io.IOException; @@ -54,14 +55,19 @@ public class UDUPServer implements Runnable {          String transmissionID = packTransmissionID(transmissionNo, packet.getAddress());          int packetNo = readPacketNo(packet.getData());          byte[] packetData = trimPacketBuffer(packet.getData()); +        UDUPMessage msg;          if (packetNo == 1 && packet.getLength() < this.bufSize) { -            UDUPMessage msg = this.serializer.deserialize(packetData); +            msg = this.serializer.deserialize(packetData); +            msg.getContent().setReceivedTimestamp(ValueUtils.currentTime());              System.out.println("UDP received message " + msg.getContent().getMessageId()); -            sendMessageFurther(msg);          } else {              System.out.println("UDP received partial message with transmission id " + transmissionID + " packet no " + packetNo); -            this.addPartialMessageAndCheckSerialization(transmissionID, packetNo, packetData); +            msg = this.addPartialMessageAndCheckSerialization(transmissionID, packetNo, packetData); +        } + +        if (msg != null) { +            sendMessageFurther(msg);          }      } @@ -124,14 +130,16 @@ public class UDUPServer implements Runnable {          return fullData;      } -    public void addPartialMessageAndCheckSerialization(String transmissionID, int newPacketNo, byte[] packetData) { +    public UDUPMessage addPartialMessageAndCheckSerialization(String transmissionID, int newPacketNo, byte[] packetData) { +        UDUPMessage msg = null; +          if (this.partialPackets.containsKey(transmissionID)) {              try {                  byte[] allPacketData = concatPacketData(transmissionID, newPacketNo, packetData); -                UDUPMessage msg = this.serializer.deserialize(allPacketData); +                msg = this.serializer.deserialize(allPacketData); +                msg.getContent().setReceivedTimestamp(ValueUtils.currentTime());                  this.partialPackets.remove(transmissionID);                  System.out.println("Kryo put together whole transmission for msg " + msg.getContent().getMessageId()); -                this.udp.sendMessage(msg.getContent());              } catch (Error | Exception e) {                  System.out.println("Kryo didn't deserialize partial message, waiting to receive the rest");              } @@ -140,6 +148,8 @@ public class UDUPServer implements Runnable {              newTransmission.add(newPacketNo-1, packetData);              this.partialPackets.put(transmissionID, newTransmission);          } + +        return msg;      }      public void close() {  |