protected virtual void OnUnsubscribeReceived(RedisSubEventArgs e) { if (UnsubscribeReceived != null) { UnsubscribeReceived(this, e); } }
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); }
/// <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); } } }