TriggerTrafficExtractor.java: simplify packet inclusion logic (shouldIncludePacket...
authorJanus Varmarken <varmarken@gmail.com>
Fri, 27 Jul 2018 01:16:14 +0000 (18:16 -0700)
committerJanus Varmarken <varmarken@gmail.com>
Fri, 27 Jul 2018 01:16:14 +0000 (18:16 -0700)
Code/Projects/SmartPlugDetector/src/main/java/edu/uci/iotproject/analysis/TriggerTrafficExtractor.java

index c0b553ce0fd20e8640be8d24e5d1bfd7c8878677..26276b17ca33797c864a6c97433ad30be49fe4e4 100644 (file)
@@ -22,7 +22,7 @@ public class TriggerTrafficExtractor implements PcapPacketFilter {
     private int mTriggerIndex = 0;
 
 
-    private static final int INCLUSION_WINDOW_MILLIS = 3_000;
+    private static final int INCLUSION_WINDOW_MILLIS = 20_000;
 
     public TriggerTrafficExtractor(String pcapFilePath, List<Instant> triggerTimes, String deviceIp) throws PcapNativeException, NotOpenException {
         mPcapFilePath = pcapFilePath;
@@ -55,6 +55,15 @@ public class TriggerTrafficExtractor implements PcapPacketFilter {
 
     @Override
     public boolean shouldIncludePacket(PcapPacket packet) {
+        // New version. Simpler, but slower: the later a packet arrives, the more elements of mTriggerTimes will need to
+        // be traversed.
+        return mTriggerTimes.stream().anyMatch(
+                trigger -> trigger.isBefore(packet.getTimestamp()) &&
+                        packet.getTimestamp().isBefore(trigger.plusMillis(INCLUSION_WINDOW_MILLIS))
+        );
+
+        /*
+        // Old version. Faster, but more complex - is it correct?
         if (mTriggerIndex >= mTriggerTimes.size()) {
             // Don't include packet if we've exhausted the list of trigger times.
             return false;
@@ -78,6 +87,7 @@ public class TriggerTrafficExtractor implements PcapPacketFilter {
                 return shouldIncludePacket(packet);
             }
         }
+        */
     }
 
 }