--- /dev/null
+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();
+ }
+}