X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FServiceHealthMonitor.java;fp=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FServiceHealthMonitor.java;h=e77a28cb896c76b0f56cb1f9386e7dbbd46f12ad;hb=679195d4e27980faf7fd4ef577301b005ab054f1;hp=0000000000000000000000000000000000000000;hpb=410441c06aa4257d7d9dcb1b581abb4017c67c50;p=rtmpclient.git 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 index 0000000..e77a28c --- /dev/null +++ b/app/src/main/java/ai/suanzi/rtmpclient/ServiceHealthMonitor.java @@ -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(); + } +}