public ChatServer(ILogger <ChatServer> logger,
                   IChatUserIdentityProvider identityProvider,
                   IMessageProtocol messageProtocol,
                   IChatServer chatServer,
                   IRoomRegistry roomRegistry)
 {
     this.logger           = logger;
     this.messageProtocol  = messageProtocol;
     this.chatServer       = chatServer;
     this.roomRegistry     = roomRegistry;
     this.identityProvider = identityProvider;
 }
        public ChatServer(ILogger <ChatServer> logger,
                          IOptions <ServerConfig> serverConfig,
                          IChatUserIdentityProvider identityProvider,
                          IMessageProtocol messageProtocol,
                          IChatServer chatServer,
                          IRoomRegistry roomRegistry)
        {
            this.logger           = logger;
            this.messageProtocol  = messageProtocol;
            this.chatServer       = chatServer;
            this.roomRegistry     = roomRegistry;
            this.identityProvider = identityProvider;
            var listeningConfig = serverConfig.Value.Listening;
            var listeningHost   = IPAddress.Parse(listeningConfig.Host);
            var listeningPort   = listeningConfig.Port;

            this.listener = new TcpListener(listeningHost, listeningPort);
            this.tracker  = new TaskTracker();
        }