예제 #1
0
    void complete(int id) {
      List<Object> localQueue;
      synchronized (guard) {
        if (id != index) {
          return;
        }
        active = false;
        if (!mainDone) {
          return;
        }
        if (emitting) {
          if (queue == null) {
            queue = new ArrayList<Object>();
          }
          queue.add(nl.completed());
          return;
        }

        localQueue = queue;
        queue = null;
        emitting = true;
      }

      drain(localQueue);
      serializedChild.onCompleted();
      unsubscribe();
    }
예제 #2
0
 @Override
 public void onCompleted() {
   List<Object> localQueue;
   synchronized (guard) {
     mainDone = true;
     if (active) {
       return;
     }
     if (emitting) {
       if (queue == null) {
         queue = new ArrayList<Object>();
       }
       queue.add(nl.completed());
       return;
     }
     localQueue = queue;
     queue = null;
     emitting = true;
   }
   drain(localQueue);
   serializedChild.onCompleted();
   unsubscribe();
 }
예제 #3
0
 @Override
 public void onCompleted() {
   buffer.add(nl.completed());
 }