public RxSpyStreamWriter(Stream stream) { _stream = stream; _serializerStrategy = new RxSpyJsonSerializerStrategy(); _cancellationTokenSource = new CancellationTokenSource(); Task.Factory.StartNew(() => RunQueue(_cancellationTokenSource.Token), TaskCreationOptions.LongRunning); }
IObservable<IEvent> ReadEvents(Stream stream) { var strategy = new RxSpyJsonSerializerStrategy(); return Observable.Create<IEvent>(async (observer, ct) => { using (var sr = new StreamReader(stream)) { string line; while (((line = await sr.ReadLineAsync()) != null)) { ct.ThrowIfCancellationRequested(); observer.OnNext(SimpleJson.DeserializeObject<IEvent>(line, strategy)); } observer.OnCompleted(); } }); }