Exemple #1
0
 private void InvokeHandlerSafely(
     Action <BroadcastingMessage> handler,
     BroadcastingMessage message
     )
 {
     try
     {
         handler?.Invoke(message);
     }
     catch (Exception e)
     {
         Debug.LogException(e);
     }
 }
Exemple #2
0
        /// <summary>
        /// Sends a message into a channel
        /// </summary>
        /// <param name="channel"></param>
        /// <param name="message"></param>
        public void Send(SpecificChannel channel, BroadcastingMessage message)
        {
            string url = new Uri(serverUri, "send").ToString();

            JsonValue serializedMessage = Serializer.ToJson <BroadcastingMessage>(
                message,
                SerializationContext.ServerToClient
                );

            http.PendingRequest().Post(url, new JsonObject {
                ["environmentId"]   = environmentId,
                ["broadcastingKey"] = broadcastingKey,
                ["channel"]         = channel.ChannelName,
                ["message"]         = serializedMessage
            });
        }
        /// <summary>
        /// Route a given message to the proper action
        /// </summary>
        /// <param name="message"></param>
        /// <exception cref="ArgumentNullException"></exception>
        public void RouteMessage(BroadcastingMessage message)
        {
            if (message == null)
            {
                throw new ArgumentNullException();
            }

            Type type = message.GetType();

            if (rules.ContainsKey(type))
            {
                rules[type].Invoke(message);
            }
            else
            {
                defaultAction?.Invoke(message);
            }
        }
Exemple #4
0
        private void RouteMessage(string channel, BroadcastingMessage message)
        {
            foreach (var pair in activeSubscriptions)
            {
                if (pair.Key.ChannelName == channel)
                {
                    InvokeHandlerSafely(pair.Value, message);
                }
            }

            foreach (var pair in pendingSubscriptions)
            {
                if (pair.Key.ChannelName == channel)
                {
                    pair.Value.pendingMessages.Enqueue(message);
                    CheckPendingSubscriptionExpiration(pair.Key);
                }
            }
        }
 /// <summary>
 /// Sends a message into this channel
 /// </summary>
 /// <param name="message"></param>
 public void Send(BroadcastingMessage message)
 {
     Broadcast.GetBroadcaster().Send(this, message);
 }