clean the code, and fix bug service stopped when back pressed
[rtmpclient.git] / app / src / main / java / ai / suanzi / rtmpclient / ServiceHealthMonitor.java
diff --git a/app/src/main/java/ai/suanzi/rtmpclient/ServiceHealthMonitor.java b/app/src/main/java/ai/suanzi/rtmpclient/ServiceHealthMonitor.java
new file mode 100644 (file)
index 0000000..e77a28c
--- /dev/null
@@ -0,0 +1,50 @@
+package ai.suanzi.rtmpclient;
+
+import org.apache.log4j.Logger;
+public class ServiceHealthMonitor extends Thread {
+    private long count = 0;
+    private long lastCnt = 0;
+    private int interval = 60; // seconds
+
+    private Callback mCallback;
+
+    public ServiceHealthMonitor(Callback cb){
+        mCallback = cb;
+    }
+
+    private Logger gLogger = Logger.getLogger("ServiceHealthMonitor");
+    @Override
+    public void run(){
+        while (true){
+            try {
+                sleep(interval * 1000);
+            }catch (InterruptedException e){
+                gLogger.error("sleep - error: " + e.getMessage());
+            }
+            if(!isHealth())
+                if(mCallback != null) mCallback.onNotHealthy();
+        }
+    }
+
+    public synchronized void record(){
+        gLogger.error("record " + count);
+        count++;
+    }
+
+    public synchronized void setInterval (int time) {
+        interval = time;
+    }
+
+    private synchronized boolean isHealth (){
+        if(count == lastCnt) {
+            gLogger.error("isHealth - count = " + count + ". lastCnt " + lastCnt);
+            return false;
+        }
+        lastCnt = count;
+        return true;
+    }
+
+    public interface Callback {
+        void onNotHealthy();
+    }
+}