public MmApplication(
            IShamanLogger logger,
            IApplicationConfig config,
            ISerializer serializer,
            ISocketFactory socketFactory,
            IMatchMaker matchMaker,
            IRequestSender requestSender,
            ITaskSchedulerFactory taskSchedulerFactory,
            IPacketSender packetSender,
            IShamanMessageSenderFactory messageSenderFactory,
            IMatchMakerServerInfoProvider serverProvider,
            IRoomManager roomManager, IMatchMakingGroupsManager matchMakingGroupManager, IPlayersManager playersManager, IMmMetrics mmMetrics, IProtectionManager protectionManager) : base(logger, config, serializer,
                                                                                                                                                                                            socketFactory, taskSchedulerFactory, requestSender, mmMetrics, protectionManager)
        {
            _packetSender            = packetSender;
            _messageSenderFactory    = messageSenderFactory;
            _serverProvider          = serverProvider;
            _roomManager             = roomManager;
            _matchMakingGroupManager = matchMakingGroupManager;
            _playersManager          = playersManager;
            _matchMaker = matchMaker;
            _id         = Guid.NewGuid();

            Logger?.Debug($"MmApplication constructor called. Id = {_id}");
        }
 public GameApplication(IShamanLogger logger, IApplicationConfig config, ISerializer serializer,
                        ISocketFactory socketFactory, ITaskSchedulerFactory taskSchedulerFactory, IRequestSender requestSender,
                        IRoomManager roomManager, IPacketSender packetSender, IGameMetrics gameMetrics,
                        IShamanMessageSenderFactory messageSenderFactory, IProtectionManager protectionManager) :
     base(logger, config, serializer, socketFactory, taskSchedulerFactory, requestSender, gameMetrics, protectionManager)
 {
     _roomManager          = roomManager;
     _packetSender         = packetSender;
     _messageSenderFactory = messageSenderFactory;
     Logger.Debug($"GameApplication constructor called");
 }
 public RoomManager(
     IShamanLogger logger,
     ISerializer serializer,
     IApplicationConfig config,
     ITaskSchedulerFactory taskSchedulerFactory,
     IRoomControllerFactory roomControllerFactory,
     IPacketSender packetSender,
     IShamanMessageSenderFactory messageSenderFactory,
     IGameMetrics gameMetrics,
     IRoomStateUpdater roomStateUpdater)
 {
     _logger                = logger;
     _serializer            = serializer;
     _taskSchedulerFactory  = taskSchedulerFactory;
     _roomControllerFactory = roomControllerFactory;
     _taskScheduler         = _taskSchedulerFactory.GetTaskScheduler();
     _taskScheduler.ScheduleOnInterval(CheckRoomsState, 0, 60000);
     _config = config;
     _taskSchedulerFactory = taskSchedulerFactory;
     _messageSender        = messageSenderFactory.Create(packetSender);
     _gameMetrics          = gameMetrics;
     _roomStateUpdater     = roomStateUpdater;
 }