diff --git a/src/main/java/ru/serega6531/packmate/PcapWorker.java b/src/main/java/ru/serega6531/packmate/PcapWorker.java index be69232..f5c0a4d 100644 --- a/src/main/java/ru/serega6531/packmate/PcapWorker.java +++ b/src/main/java/ru/serega6531/packmate/PcapWorker.java @@ -149,15 +149,17 @@ public class PcapWorker { String sourceIpAndPort = sourceIpString + ":" + sourcePort; String destIpAndPort = destIpString + ":" + destPort; + boolean incoming = destIpString.equals(localIp); + UnfinishedStream stream = new UnfinishedStream(sourceIp, destIp, sourcePort, destPort, protocol); ru.serega6531.packmate.model.Packet packet = ru.serega6531.packmate.model.Packet.builder() .tempId(packetIdCounter++) .timestamp(System.currentTimeMillis()) + .incoming(incoming) .content(content) .build(); - if (unfinishedStreams.containsKey(stream)) { unfinishedStreams.get(stream).add(packet); } else { @@ -211,9 +213,9 @@ public class PcapWorker { final Map.Entry> entry = iterator.next(); final UnfinishedStream stream = entry.getKey(); - if(stream.getProtocol() == Protocol.UDP) { + if (stream.getProtocol() == Protocol.UDP) { final List packets = entry.getValue(); - if(System.currentTimeMillis() - packets.get(packets.size() - 1).getTimestamp() > TimeUnit.SECONDS.toMillis(udpStreamTimeout)) { + if (System.currentTimeMillis() - packets.get(packets.size() - 1).getTimestamp() > TimeUnit.SECONDS.toMillis(udpStreamTimeout)) { iterator.remove(); streamService.saveNewStream(stream, packets); streamsClosed++; diff --git a/src/main/java/ru/serega6531/packmate/model/Packet.java b/src/main/java/ru/serega6531/packmate/model/Packet.java index af360c2..f3f59c9 100644 --- a/src/main/java/ru/serega6531/packmate/model/Packet.java +++ b/src/main/java/ru/serega6531/packmate/model/Packet.java @@ -40,6 +40,8 @@ public class Packet { private long timestamp; + private boolean incoming; // true если от клиента к серверу, иначе false + private byte[] content; }