Ejemplo n.º 1
0
 protected virtual void OnUnsubscribeReceived(RedisSubEventArgs e)
 {
     if (UnsubscribeReceived != null)
     {
         UnsubscribeReceived(this, e);
     }
 }
Ejemplo n.º 2
0
 protected virtual void OnMessageReceived(RedisSubEventArgs e)
 {
     if (MessageReceived != null)
     {
         MessageReceived(this, e);
     }
 }
 static void MessageReceived(object sender, RedisSubEventArgs e)
 {
     switch (e.kind) {
     case "psubscribe":
     case "punsubscribe":
         Console.WriteLine ("Received {0}: {1}", e.kind, e.message);
         break;
     default:
         Console.WriteLine ("Received {0}: {1}", e.kind, e.message);
         break;
     }
 }
 /// <summary>
 /// Worker method to handle incoming messages from Redis.
 /// </summary>
 void SubWorker()
 {
     object [] data = null;
     while (continueWorking)
     {
         try {
             data = ReadMixedArray ();
         }
         catch (Exception ex) {
             if (continueWorking)
                 throw ex;
             else {
                 Log ("C", "# break listening");
                 break;
             }
         }
         if (data.Length < 3)
             throw new Exception ("Received unexpected message with " +
                 data.Length + " elements");
         RedisSubEventArgs e = new RedisSubEventArgs();
         e.message = data [data.Length - 1];
         e.kind = Encoding.UTF8.GetString (data[0] as byte []);
         switch (e.kind) {
         case "message":
             if (MessageReceived == null)
                 break;
             e.channel = Encoding.UTF8.GetString (data [1] as byte[]);
             e.message = Encoding.UTF8.GetString (data [data.Length - 1] as byte[]);
             OnMessageReceived(e);
             break;
         case "subscribe":
             if (SubscribeReceived == null) break;
             e.channel = Encoding.UTF8.GetString (data [1] as byte []);
             OnSubscribeReceived(e);
             break;
         case "unsubscribe":
             if (UnsubscribeReceived == null) break;
             e.channel = Encoding.UTF8.GetString (data [1] as byte []);
             OnUnsubscribeReceived(e);
             break;
         case "pmessage":
             if (MessageReceived == null) break;
             if (data.Length != 4)
                 throw new Exception ("Received invalid pmessage with " +
                     data.Length + " elements");
             e.pattern = Encoding.UTF8.GetString (data [1] as byte []);
             e.channel = Encoding.UTF8.GetString (data [2] as byte []);
             OnMessageReceived(e);
             break;
         case "psubscribe":
             if (SubscribeReceived == null) break;
             e.pattern = Encoding.UTF8.GetString (data [1] as byte []);
             OnSubscribeReceived(e);
             break;
         case "punsubscribe":
             if (UnsubscribeReceived == null) break;
             e.pattern = Encoding.UTF8.GetString (data [1] as byte []);
             OnUnsubscribeReceived(e);
             break;
         default:
             throw new Exception ("Received message of unsupported kind " + e.kind);
         }
     }
 }
 protected virtual void OnUnsubscribeReceived(RedisSubEventArgs e)
 {
     if (UnsubscribeReceived != null)
         UnsubscribeReceived (this, e);
 }
 protected virtual void OnMessageReceived(RedisSubEventArgs e)
 {
     if (MessageReceived != null)
         MessageReceived (this, e);
 }
Ejemplo n.º 7
0
        /// <summary>
        /// Worker method to handle incoming messages from Redis.
        /// </summary>
        void SubWorker()
        {
            object [] data = null;
            while (continueWorking)
            {
                try {
                    data = ReadMixedArray();
                }
                catch (Exception ex) {
                    if (continueWorking)
                    {
                        throw ex;
                    }
                    else
                    {
                        Log("C", "# break listening");
                        break;
                    }
                }
                if (data.Length < 3)
                {
                    throw new Exception("Received unexpected message with " +
                                        data.Length + " elements");
                }
                RedisSubEventArgs e = new RedisSubEventArgs();
                e.message = data [data.Length - 1];
                e.kind    = Encoding.UTF8.GetString(data[0] as byte []);
                switch (e.kind)
                {
                case "message":
                    if (MessageReceived == null)
                    {
                        break;
                    }
                    e.channel = Encoding.UTF8.GetString(data [1] as byte[]);
                    e.message = Encoding.UTF8.GetString(data [data.Length - 1] as byte[]);
                    OnMessageReceived(e);
                    break;

                case "subscribe":
                    if (SubscribeReceived == null)
                    {
                        break;
                    }
                    e.channel = Encoding.UTF8.GetString(data [1] as byte []);
                    OnSubscribeReceived(e);
                    break;

                case "unsubscribe":
                    if (UnsubscribeReceived == null)
                    {
                        break;
                    }
                    e.channel = Encoding.UTF8.GetString(data [1] as byte []);
                    OnUnsubscribeReceived(e);
                    break;

                case "pmessage":
                    if (MessageReceived == null)
                    {
                        break;
                    }
                    if (data.Length != 4)
                    {
                        throw new Exception("Received invalid pmessage with " +
                                            data.Length + " elements");
                    }
                    e.pattern = Encoding.UTF8.GetString(data [1] as byte []);
                    e.channel = Encoding.UTF8.GetString(data [2] as byte []);
                    OnMessageReceived(e);
                    break;

                case "psubscribe":
                    if (SubscribeReceived == null)
                    {
                        break;
                    }
                    e.pattern = Encoding.UTF8.GetString(data [1] as byte []);
                    OnSubscribeReceived(e);
                    break;

                case "punsubscribe":
                    if (UnsubscribeReceived == null)
                    {
                        break;
                    }
                    e.pattern = Encoding.UTF8.GetString(data [1] as byte []);
                    OnUnsubscribeReceived(e);
                    break;

                default:
                    throw new Exception("Received message of unsupported kind " + e.kind);
                }
            }
        }