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(); }
@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(); }
@Override public void onCompleted() { buffer.add(nl.completed()); }