public void Send(AddPeerSubscription message)
        {
            if (_ids.ContainsKey(message.SubscriptionId))
            {
                return;
            }

            _ids.Add(message.SubscriptionId, message);

            if (_ids.Count > 1)
            {
                return;
            }

            _subscriptionId = NewId.NextGuid();
            _endpointUri    = message.EndpointUri;

            var add = new SubscriptionAddedMessage
            {
                SubscriptionId = _subscriptionId,
                EndpointUri    = _endpointUri,
                MessageName    = _messageName,
                CorrelationId  = _correlationId,
            };

            _log.DebugFormat("PeerSubscriptionAdded: {0}, {1} {2}", _messageName, _endpointUri, _subscriptionId);

            _observer.OnSubscriptionAdded(add);
        }
示例#2
0
        public void OnSubscribeTo(SubscribeTo added)
        {
            lock (_ids)
            {
                bool wasAdded = _ids.Add(added.SubscriptionId);

                if (!wasAdded || _ids.Count != 1)
                {
                    return;
                }
            }

            _subscriptionId = NewId.NextGuid();
            _endpointUri    = added.EndpointUri;

            var add = new SubscriptionAddedMessage
            {
                SubscriptionId = _subscriptionId,
                EndpointUri    = _endpointUri,
                MessageName    = _messageName,
                CorrelationId  = _correlationId,
            };

            _log.DebugFormat("SubscribeTo: {0}, {1}", _messageName, _subscriptionId);

            _observer.OnSubscriptionAdded(add);
        }