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}