Esempio n. 1
0
        private void OnReceived(WriteBehavior behavior, string data)
        {
            if (behavior == WriteBehavior.None)
            {
                return;
            }

            var callback = Received;

            if (callback != null)
            {
                JObject result    = JObject.Parse(data);
                string  dataValue = result["data"].Type == JTokenType.Null
                    ? null
                    : result["data"].ToString();

                var args =
                    new FirebaseEventReceivedEventArgs(new FirebaseMessage(behavior,
                                                                           new FirebasePath(result["path"].ToString()),
                                                                           dataValue,
                                                                           null,
                                                                           MessageSouce.Remote));

                callback(this, args);
            }
        }
Esempio n. 2
0
 public FirebaseMessage(WriteBehavior behavior, FirebasePath path, string value, FirebasePriority priority,
                        FirebaseStatusCallback callback, MessageSouce source)
 {
     Behavior = behavior;
     Path     = path;
     Value    = value;
     Callback = callback;
     Priority = priority;
     Source   = source;
 }
Esempio n. 3
0
 public FirebaseMessage(WriteBehavior behavior, FirebasePath path, string value, FirebasePriority priority,
     FirebaseStatusCallback callback, MessageSouce source)
 {
     Behavior = behavior;
     Path = path;
     Value = value;
     Callback = callback;
     Priority = priority;
     Source = source;
 }
Esempio n. 4
0
 void IUtf8JsonSerializable.Write(Utf8JsonWriter writer)
 {
     writer.WriteStartObject();
     writer.WritePropertyName("writeBehavior");
     writer.WriteStringValue(WriteBehavior.ToString());
     if (Optional.IsDefined(IgnoreNullValues))
     {
         writer.WritePropertyName("ignoreNullValues");
         writer.WriteObjectValue(IgnoreNullValues);
     }
     if (Optional.IsDefined(AlternateKeyName))
     {
         writer.WritePropertyName("alternateKeyName");
         writer.WriteObjectValue(AlternateKeyName);
     }
     writer.WritePropertyName("type");
     writer.WriteStringValue(Type);
     if (Optional.IsDefined(WriteBatchSize))
     {
         writer.WritePropertyName("writeBatchSize");
         writer.WriteObjectValue(WriteBatchSize);
     }
     if (Optional.IsDefined(WriteBatchTimeout))
     {
         writer.WritePropertyName("writeBatchTimeout");
         writer.WriteObjectValue(WriteBatchTimeout);
     }
     if (Optional.IsDefined(SinkRetryCount))
     {
         writer.WritePropertyName("sinkRetryCount");
         writer.WriteObjectValue(SinkRetryCount);
     }
     if (Optional.IsDefined(SinkRetryWait))
     {
         writer.WritePropertyName("sinkRetryWait");
         writer.WriteObjectValue(SinkRetryWait);
     }
     if (Optional.IsDefined(MaxConcurrentConnections))
     {
         writer.WritePropertyName("maxConcurrentConnections");
         writer.WriteObjectValue(MaxConcurrentConnections);
     }
     foreach (var item in AdditionalProperties)
     {
         writer.WritePropertyName(item.Key);
         writer.WriteObjectValue(item.Value);
     }
     writer.WriteEndObject();
 }
        private void OnReceived(WriteBehavior behavior, string data)
        {
            if (behavior == WriteBehavior.None)
            {
                return;
            }

            var callback = Received;
            if (callback != null)
            {
                JObject result = JObject.Parse(data);
                string dataValue = result["data"].Type == JTokenType.Null
                    ? null
                    : result["data"].ToString();

                var args =
                    new FirebaseEventReceivedEventArgs(new FirebaseMessage(behavior,
                        new FirebasePath(result["path"].ToString()),
                        dataValue,
                        null,
                        MessageSouce.Remote));

                callback(this, args);
            }
        }
Esempio n. 6
0
        private async void ReceiveThread(CancellationToken cancel)
        {
            try
            {
                while (true)
                {
                    cancel.ThrowIfCancellationRequested();

                    var uri = GetUri(new FirebasePath());
                    HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, uri);
                    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/event-stream"));

                    var response =
                        await
                        _client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancel)
                        .ConfigureAwait(false);

                    response.EnsureSuccessStatusCode();

                    using (
                        var stream =
                            await response.Content.ReadAsStreamAsync().WithCancellation(cancel).ConfigureAwait(false))
                        using (var reader = new StreamReader(stream))
                        {
                            WriteBehavior behavior = WriteBehavior.None;

                            while (true)
                            {
                                cancel.ThrowIfCancellationRequested();

                                var line = await reader.ReadLineAsync().WithCancellation(cancel).ConfigureAwait(false);

                                if (line == null)
                                {
                                    continue;
                                }

                                Debug.WriteLine("RECV: {0}", line);

                                if (line.StartsWith("event:"))
                                {
                                    string eventName = line.Substring(6).Trim();
                                    switch (eventName)
                                    {
                                    case "cancel":
                                    case "auth_revoked":
                                    case "keep-alive":
                                        OnReceived(WriteBehavior.None, null);
                                        behavior = WriteBehavior.None;
                                        break;

                                    case "put":
                                        behavior = WriteBehavior.Replace;
                                        break;

                                    case "patch":
                                        behavior = WriteBehavior.Merge;
                                        break;
                                    }
                                }

                                if (line.StartsWith("data:"))
                                {
                                    OnReceived(behavior, line.Substring(5).Trim());

                                    behavior = WriteBehavior.None;
                                }
                            }
                        }
                }
            }
            catch (OperationCanceledException)
            {
            }
        }
Esempio n. 7
0
 public FirebaseMessage(WriteBehavior behavior, FirebasePath path, string value, FirebaseStatusCallback callback,
                        MessageSouce source)
     : this(behavior, path, value, null, callback, source)
 {
 }
Esempio n. 8
0
 public FirebaseMessage(WriteBehavior behavior, FirebasePath path, string value, FirebaseStatusCallback callback,
     MessageSouce source)
     : this(behavior, path, value, null, callback, source)
 {
 }