Esempio n. 1
0
 /// <summary>
 /// Constructs a StreamManager instance.
 /// </summary>
 /// <param name="streamProcessor">A platform-specific implementation of IStreamProcessor.</param>
 /// <param name="streamProperties">HTTP request properties for the stream.</param>
 /// <param name="config">An implementation of IBaseConfiguration.</param>
 /// <param name="clientEnvironment">A subclass of ClientEnvironment.</param>
 /// <param name="eventSourceCreator">Null in normal usage; pass a non-null delegate if you
 /// are in a unit test and want to mock out the event source.</param>
 public StreamManager(IStreamProcessor streamProcessor, StreamProperties streamProperties,
                      IBaseConfiguration config, ClientEnvironment clientEnvironment,
                      EventSourceCreator eventSourceCreator)
 {
     _streamProcessor   = streamProcessor;
     _streamProperties  = streamProperties;
     _config            = config;
     _clientEnvironment = clientEnvironment;
     _esCreator         = eventSourceCreator ?? DefaultEventSourceCreator;
     _initTask          = new TaskCompletionSource <bool>();
     _backOff           = new EventSource.ExponentialBackoffWithDecorrelation(_config.ReconnectTime, TimeSpan.FromMilliseconds(30000));
 }
Esempio n. 2
0
 private IEventSource DefaultEventSourceCreator(StreamProperties streamProperties, IDictionary <string, string> headers)
 {
     EventSource.Configuration config = EventSource.Configuration.Builder(streamProperties.StreamUri)
                                        .Method(streamProperties.Method)
                                        .RequestBodyFactory(() => streamProperties.RequestBody)
                                        .MessageHandler(_config.HttpClientHandler)
                                        .ConnectionTimeout(_config.HttpClientTimeout)
                                        .DelayRetryDuration(_config.ReconnectTime)
                                        .ReadTimeout(_config.ReadTimeout)
                                        .RequestHeaders(headers)
                                        .Logger(LogManager.GetLogger(typeof(EventSource.EventSource)))
                                        .Build();
     return(new EventSource.EventSource(config));
 }