public TopicDispatcher(ITopicFactory <T> topicFactory) { if (topicFactory == null) { throw new ArgumentNullException(nameof(topicFactory)); } _client = topicFactory.Create(); }
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; }