From e3d7bfd7a02bb92b4a50f96f0b5ed89ed1d7650c Mon Sep 17 00:00:00 2001
From: PtrMan <robertw89@googlemail.com>
Date: Mon, 11 Mar 2019 17:19:31 +0100
Subject: [PATCH] Update: Metric: relative metric for pong

---
 .../opennars/lab/metric/MetricReporter.java    |  4 ++++
 .../org/opennars/lab/metric/MetricSensor.java  |  5 +++++
 .../java/org/opennars/lab/microworld/Pong.java | 18 ++++++++++++++++--
 .../org/opennars/lab/microworld/SimNAR.java    |  8 ++++++++
 4 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/opennars/lab/metric/MetricReporter.java b/src/main/java/org/opennars/lab/metric/MetricReporter.java
index 636b7aa6a..f0adb19c2 100644
--- a/src/main/java/org/opennars/lab/metric/MetricReporter.java
+++ b/src/main/java/org/opennars/lab/metric/MetricReporter.java
@@ -23,6 +23,10 @@ public class MetricReporter {
         for(final MetricSensor iSensor : sensors) {
             send(iSensor.getValueAsString(), iSensor.getName());
         }
+
+        for(final MetricSensor iSensor : sensors) {
+            iSensor.resetAfterSending();
+        }
     }
 
     private void send(final String dataAsString, final String metricPathName) {
diff --git a/src/main/java/org/opennars/lab/metric/MetricSensor.java b/src/main/java/org/opennars/lab/metric/MetricSensor.java
index 6e47af3c4..2daf7d339 100644
--- a/src/main/java/org/opennars/lab/metric/MetricSensor.java
+++ b/src/main/java/org/opennars/lab/metric/MetricSensor.java
@@ -4,4 +4,9 @@ public interface MetricSensor {
     String getName();
 
     String getValueAsString();
+
+    /**
+     * is called to give the sensor a chance to reset the stat after sending
+     */
+    void resetAfterSending();
 }
diff --git a/src/main/java/org/opennars/lab/microworld/Pong.java b/src/main/java/org/opennars/lab/microworld/Pong.java
index d4f7fe113..7c97f2e75 100755
--- a/src/main/java/org/opennars/lab/microworld/Pong.java
+++ b/src/main/java/org/opennars/lab/microworld/Pong.java
@@ -61,6 +61,8 @@ public class Pong extends Frame {
         metricReporter.connect("127.0.0.1", 1212);
 
         metricReporter.sensors.add(new MetricSensor() {
+            private int oldBallHits = 0;
+
             @Override
             public String getName() {
                 return "ballHits";
@@ -68,11 +70,18 @@ public class Pong extends Frame {
 
             @Override
             public String getValueAsString() {
-                return "" + ballHits;
+                return "" + (ballHits-oldBallHits);
+            }
+
+            @Override
+            public void resetAfterSending() {
+                oldBallHits = ballHits;
             }
         });
 
         metricReporter.sensors.add(new MetricSensor() {
+            private int oldBallMisses = 0;
+
             @Override
             public String getName() {
                 return "ballMisses";
@@ -80,7 +89,12 @@ public class Pong extends Frame {
 
             @Override
             public String getValueAsString() {
-                return "" + ballMisses;
+                return "" + (ballMisses-oldBallMisses);
+            }
+
+            @Override
+            public void resetAfterSending() {
+                oldBallMisses = ballMisses;
             }
         });
 
diff --git a/src/main/java/org/opennars/lab/microworld/SimNAR.java b/src/main/java/org/opennars/lab/microworld/SimNAR.java
index f59530ce7..168787307 100755
--- a/src/main/java/org/opennars/lab/microworld/SimNAR.java
+++ b/src/main/java/org/opennars/lab/microworld/SimNAR.java
@@ -60,6 +60,10 @@ public class SimNAR extends Frame {
             public String getValueAsString() {
                 return "" + counterAteGood;
             }
+
+            @Override
+            public void resetAfterSending() {
+            }
         });
 
         metricReporter.sensors.add(new MetricSensor() {
@@ -72,6 +76,10 @@ public class SimNAR extends Frame {
             public String getValueAsString() {
                 return "" + counterAteBad;
             }
+
+            @Override
+            public void resetAfterSending() {
+            }
         });
 
         String[] args = {"Microworld"};
-- 
GitLab