public void Subscribe(string hash, OnMessageHandler messageHandler = null, OnSubscribedHandler subscribedHandler = null, OnMessageHandler deleteHandler = null) { Contract.Requires <ArgumentNullException>(hash != null); Contract.Requires <ArgumentException>(hash.Trim().Length > 0); Contract.Requires <ArgumentException>(Constants.STREAM_HASH_FORMAT.IsMatch(hash), Messages.INVALID_STREAM_HASH); if (!_subscriptions.Contains(hash)) { _subscriptions.Add(hash); } if (messageHandler != null) { if (_messageHandlers.ContainsKey(hash)) { _messageHandlers[hash] = messageHandler; } else { _messageHandlers.Add(hash, messageHandler); } } if (subscribedHandler != null) { if (_subscribedHandlers.ContainsKey(hash)) { _subscribedHandlers[hash] = subscribedHandler; } else { _subscribedHandlers.Add(hash, subscribedHandler); } } if (deleteHandler != null) { if (_deleteHandlers.ContainsKey(hash)) { _deleteHandlers[hash] = deleteHandler; } else { _deleteHandlers.Add(hash, deleteHandler); } } Trace.TraceInformation("Subscribing to stream: " + hash); var message = new { action = "subscribe", hash = hash }; _connection.Send(JsonConvert.SerializeObject(message)); }
public void Subscribe(string hash, OnMessageHandler messageHandler = null, OnSubscribedHandler subscribedHandler = null, OnMessageHandler deleteHandler = null) { Contract.Requires<ArgumentNullException>(hash != null); Contract.Requires<ArgumentException>(hash.Trim().Length > 0); Contract.Requires<ArgumentException>(Constants.STREAM_HASH_FORMAT.IsMatch(hash), Messages.INVALID_STREAM_HASH); if(!_subscriptions.Contains(hash)) _subscriptions.Add(hash); if(messageHandler != null) { if (_messageHandlers.ContainsKey(hash)) _messageHandlers[hash] = messageHandler; else _messageHandlers.Add(hash, messageHandler); } if (subscribedHandler != null) { if (_subscribedHandlers.ContainsKey(hash)) _subscribedHandlers[hash] = subscribedHandler; else _subscribedHandlers.Add(hash, subscribedHandler); } if (deleteHandler != null) { if (_deleteHandlers.ContainsKey(hash)) _deleteHandlers[hash] = deleteHandler; else _deleteHandlers.Add(hash, deleteHandler); } Trace.TraceInformation("Subscribing to stream: " + hash); var message = new { action = "subscribe", hash = hash }; _connection.Send(JsonConvert.SerializeObject(message)); }