Exemplo n.º 1
0
  public void register(MsgHandler handler) {
    if (handler == null) {
      throw new IllegalArgumentException("register handler cannot be null");
    }

    int[] interests = handler.getInterests();
    if (interests != null) {
      for (Integer interest : interests) {
        Set<MsgHandler> msgHandlers = handlers.get(interest);
        if (msgHandlers == null) {
          CopyOnWriteArraySet<MsgHandler> created = new CopyOnWriteArraySet<>();
          msgHandlers = handlers.putIfAbsent(interest, msgHandlers);
          if (msgHandlers == null) {
            msgHandlers = created;
          }
        }
        msgHandlers.add(handler);
      }

      for (Integer interest : interests) {
        Msg msg = stickyMsg.get(interest);
        if (msg != null) {
          handler.onMsg(msg);
        }
      }
    } else {
      throw new IllegalArgumentException("register handler which has no interest");
    }
  }
Exemplo n.º 2
0
  public void unregister(MsgHandler handler) {
    if (handler == null) {
      throw new IllegalArgumentException("unregister handler cannot be null");
    }

    int[] interests = handler.getInterests();
    if (interests == null) {
      for (Integer interest : interests) {
        Set<MsgHandler> msgHandlers = handlers.get(interest);
        if (msgHandlers != null) {
          msgHandlers.remove(handler);
        }
      }
    } else {
      throw new IllegalArgumentException("unregister handler which has no interest");
    }
  }