All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.leancloud.im.AVIMEventHandler Maven / Gradle / Ivy

There is a newer version: 8.2.28
Show newest version
package cn.leancloud.im;

import cn.leancloud.internal.ThreadModel.ThreadShuttle;
import cn.leancloud.internal.ThreadModel.MainThreadChecker;

public abstract class AVIMEventHandler {

  private static volatile boolean needCheckMainThread = false;
  private static volatile MainThreadChecker mainThreadChecker = null;
  private static volatile ThreadShuttle threadShuttle = null;

  static void setMainThreadChecker(MainThreadChecker checker, ThreadShuttle shuttle) {
    if (null == checker) {
      needCheckMainThread = false;
      mainThreadChecker = null;
      threadShuttle = null;
    } else {
      needCheckMainThread = true;
      mainThreadChecker = checker;
      threadShuttle = shuttle;
    }
  }

  public void processEvent(final int operation, final Object operator, final Object operand,
                           final Object eventScene) {
    if (needCheckMainThread && !mainThreadChecker.isMainThread()) {
      threadShuttle.launch(new Runnable() {
        @Override
        public void run() {
          processEvent0(operation, operator, operand, eventScene);
        }
      });
    } else {
      processEvent0(operation, operator, operand, eventScene);
    }
  };

  protected abstract void processEvent0(int operation, Object operator, Object operand,
                                        Object eventScene);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy