示例#1
0
        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));
        }