示例#1
0
        public TopicDispatcher(ITopicFactory <T> topicFactory)
        {
            if (topicFactory == null)
            {
                throw new ArgumentNullException(nameof(topicFactory));
            }

            _client = topicFactory.Create();
        }
示例#2
0
        public async Task Connect(string topicId)
        {
            if (string.IsNullOrEmpty(topicId))
            {
                throw new ArgumentException("Topic id cannot be null or empty.", nameof(topicId));
            }
            var    previousTopicId = _state.TopicId;
            ITopic topic;

            if (previousTopicId != null && previousTopicId != topicId)
            {
                topic = await _topicFactory.Create(previousTopicId);

                await topic.Send(new Disconnected(_state.ConnectionId));
            }
            topic = await _topicFactory.Create(topicId);

            await topic.Send(new Connected(_state.ConnectionId, topicId));

            _state.TopicId = topicId;
        }