001package com.box.sdkgen.box.eventstream;
002
003import com.box.sdkgen.managers.events.EventsManager;
004import com.box.sdkgen.managers.events.GetEventStreamHeaders;
005import com.box.sdkgen.managers.events.GetEventStreamQueryParams;
006import com.box.sdkgen.schemas.event.Event;
007import java.util.Iterator;
008
009public class EventStream implements Iterable<Event> {
010
011  EventStreamIterator iterator;
012
013  private EventStream(Builder builder) {
014    this.iterator =
015        new EventStreamIterator(builder.eventsManager, builder.queryParams, builder.headersInput);
016  }
017
018  @Override
019  public Iterator<Event> iterator() {
020    return this.iterator;
021  }
022
023  public void stop() {
024    this.iterator.stop();
025  }
026
027  public static class Builder {
028    final EventsManager eventsManager;
029    final GetEventStreamQueryParams queryParams;
030    GetEventStreamHeaders headersInput;
031
032    public Builder(EventsManager eventsManager, GetEventStreamQueryParams queryParams) {
033      this.eventsManager = eventsManager;
034      this.queryParams = queryParams;
035      this.headersInput = new GetEventStreamHeaders();
036    }
037
038    public Builder headersInput(GetEventStreamHeaders headersInput) {
039      this.headersInput = headersInput != null ? headersInput : new GetEventStreamHeaders();
040      return this;
041    }
042
043    public EventStream build() {
044      return new EventStream(this);
045    }
046  }
047}