示例#1
0
  public void notify(StateVariable stateVar) {
    SubscriberList subList = getSubscriberList();
    int subListCnt;
    Subscriber subs[];

    // Remove expired subscribers.
    subListCnt = subList.size();
    subs = new Subscriber[subListCnt];
    for (int n = 0; n < subListCnt; n++) subs[n] = subList.getSubscriber(n);
    for (int n = 0; n < subListCnt; n++) {
      Subscriber sub = subs[n];
      if (sub == null) continue;
      if (sub.isExpired() == true) removeSubscriber(sub);
    }

    // Notify to subscribers.
    subListCnt = subList.size();
    subs = new Subscriber[subListCnt];
    for (int n = 0; n < subListCnt; n++) subs[n] = subList.getSubscriber(n);
    for (int n = 0; n < subListCnt; n++) {
      Subscriber sub = subs[n];
      if (sub == null) continue;
      if (notify(sub, stateVar) == false) {
        /* Don't remove for NMPR specification.
        removeSubscriber(sub);
        */
      }
    }
  }