Exemplo n.º 1
0
 public async Task <EventStreamResponse <T> > OnAsync <T>(string path,
                                                          ObjectRootPatchReceivedEventHandler <T> objectRootPatchReceived         = null,
                                                          ObjectPropertyPatchReceivedEventHandler <T> objectPropertyPatchReceived = null,
                                                          EventStreamingResponseEventHandler <T> eventStreamingResponse           = null,
                                                          EventStreamingResponseRawEventHandler <T> eventStreamingResponseRaw     = null,
                                                          EventStreamingEventHandler <T> eventStreaming = null,
                                                          Action <Exception> exceptionHandler           = null)
 {
     try
     {
         return(new EventStreamResponse <T>(this.Serializer,
                                            await _requestManager.ListenAsync(path).ConfigureAwait(false),
                                            objectRootPatchReceived,
                                            objectPropertyPatchReceived,
                                            eventStreamingResponse,
                                            eventStreamingResponseRaw,
                                            eventStreaming,
                                            exceptionHandler));
     }
     catch (Exception e)
     {
         if (exceptionHandler == null)
         {
             throw new FirebaseException("Failed to establish OnAsync observer", e);
         }
         exceptionHandler(e);
     }
     return(null);
 }
Exemplo n.º 2
0
        internal EventStreamResponse(ISerializer serializer, HttpResponseMessage httpResponse,
                                     ObjectRootPatchReceivedEventHandler <T> rootPatchReceived           = null,
                                     ObjectPropertyPatchReceivedEventHandler <T> propertyPatchReceived   = null,
                                     EventStreamingResponseEventHandler <T> eventStreamingResponse       = null,
                                     EventStreamingResponseRawEventHandler <T> eventStreamingResponseRaw = null,
                                     EventStreamingEventHandler <T> eventStreaming = null,
                                     Action <Exception> exceptionHandler           = null)
        {
            _serializer = serializer;
            _fireCache  = new FireCache();
            _cache      = new TemporaryCache();

            this.CancellationToken = new CancellationTokenSource();
            this.ExceptionHandler  = exceptionHandler;

            if (rootPatchReceived != null)
            {
                this.OnObjectRootPatchReceived += rootPatchReceived;
            }
            if (propertyPatchReceived != null)
            {
                this.OnObjectPropertyPatchReceived += propertyPatchReceived;
                _jsonPatchManager = new JsonPatcher(_serializer);
            }
            if (eventStreamingResponse != null)
            {
                this.OnEventStreamingResponse += eventStreamingResponse;
            }
            if (eventStreamingResponseRaw != null)
            {
                this.OnEventStreamingResponseRaw += eventStreamingResponseRaw;
            }
            if (eventStreaming != null)
            {
                this.OnEventStreaming += eventStreaming;
            }
            _pollingTask = ReadLoop(httpResponse, CancellationToken.Token);
        }