public Disposable subscribe()

in mobius-extras/src/main/java/com/spotify/mobius/extras/QueueingEventSubject.java [57:77]


  public Disposable subscribe(Consumer<E> eventConsumer) {
    List<E> queued = new ArrayList<>();

    // avoid calling the consumer from the synchronized section
    synchronized (this) {
      if (state == State.SUBSCRIBED) {
        throw new IllegalStateException(
            "Only a single subscription is supported, previous subscriber is: " + subscriber);
      }

      state = State.SUBSCRIBED;
      subscriber = eventConsumer;
      queue.drainTo(queued);
    }

    for (E event : queued) {
      eventConsumer.accept(event);
    }

    return new Unsubscriber();
  }