public async Task CreateRoomNoServersTest()
        {
            _serverProvider = new FakeServerProvider(false, true);

            _roomManager = new RoomManager(_serverProvider, _logger, _taskSchedulerFactory, _roomApiProvider);

            var            players    = new Dictionary <Guid, Dictionary <byte, object> >();
            var            properties = new Dictionary <byte, object>();
            var            success    = true;
            Exception      ex         = null;
            JoinRoomResult result     = null;

            properties.Add(PropertyCode.RoomProperties.TotalPlayersNeeded, 3);
            try
            {
                result = await _roomManager.CreateRoom(_group1Id, players, properties);
            }
            catch (Exception e)
            {
                success = false;
                ex      = e;
            }

            Assert.IsNotNull(result);
            Assert.AreEqual(result.Result, RoomOperationResult.ServerNotFound);
            Assert.AreEqual(true, success);
            Assert.AreEqual(null, ex);
            Assert.AreEqual(0, _roomManager.GetRoomsCount());
        }
        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}");
        }
Ejemplo n.º 3
0
 public MatchmakerController(ISerializer serializer, IShamanLogger logger, IRoomManager roomManager, IMatchMakerServerInfoProvider serverInfoProvider)
 {
     _serializer         = serializer;
     _logger             = logger;
     _roomManager        = roomManager;
     _serverInfoProvider = serverInfoProvider;
 }
 public RoomManager(IMatchMakerServerInfoProvider serverProvider, IShamanLogger logger,
                    ITaskSchedulerFactory taskSchedulerFactory, IRoomApiProvider roomApiProvider)
 {
     _serverProvider  = serverProvider;
     _logger          = logger;
     _roomApiProvider = roomApiProvider;
     _taskScheduler   = taskSchedulerFactory.GetTaskScheduler();
 }
 public void Setup()
 {
     _logger               = new ConsoleLogger();
     _serverProvider       = new FakeServerProvider();
     _taskSchedulerFactory = new TaskSchedulerFactory(_logger);
     _requestSender        = new FakeSender();
     _roomApiProvider      = new DefaultRoomApiProvider(_requestSender, _logger);
     _roomManager          = new RoomManager(_serverProvider, _logger, _taskSchedulerFactory, _roomApiProvider);
     _roomManager.Start(5);
 }
Ejemplo n.º 6
0
        /// <summary>
        /// MM related middleware configuration
        /// </summary>
        /// <param name="app"></param>
        /// <param name="env"></param>
        /// <param name="server"></param>
        /// <param name="logger"></param>
        /// <param name="matchMaker"></param>
        /// <param name="serverInfoProvider"></param>
        /// <param name="bundleLoader"></param>
        public void ConfigureMm(IApplicationBuilder app, IHostingEnvironment env, IApplication server,
                                IShamanLogger logger, IMatchMaker matchMaker, IMatchMakerServerInfoProvider serverInfoProvider, IBundleLoader bundleLoader)
        {
            //load bundle
            bundleLoader.LoadBundle().Wait();

            //resolve main bundle type and configure it
            //in case of matchmaker we can load bundle during this stage
            var resolver = bundleLoader.LoadTypeFromBundle <IMmResolver>();

            RoomPropertiesProvider.RoomPropertiesProviderImplementation = resolver.GetRoomPropertiesProvider();
            resolver.Configure(matchMaker);

            //start game server info provider - gathers info about game servers connected to this matchmaker
            serverInfoProvider.Start();

            base.ConfigureCommon(app, env, server, logger);
        }
        public void Setup()
        {
            _logger = new ConsoleLogger();
            _taskSchedulerFactory = new TaskSchedulerFactory(_logger);
            _playersManager       = new PlayersManager(Mock.Of <IMmMetrics>(), _logger);
            _packetSender         = Mock.Of <IShamanMessageSender>();
            _serverProvider       = new FakeServerProvider();
            _requestSender        = new FakeSender();
            _roomApiProvider      = new DefaultRoomApiProvider(_requestSender, _logger);
            _roomManager          = new RoomManager(_serverProvider, _logger, _taskSchedulerFactory, _roomApiProvider);

            _measures.Add(FakePropertyCodes.PlayerProperties.GameMode, 1);
            _roomProperties.Add(FakePropertyCodes.RoomProperties.MatchMakingTick, 250);
            _roomProperties.Add(FakePropertyCodes.RoomProperties.TotalPlayersNeeded, 3);
            _roomProperties.Add(FakePropertyCodes.RoomProperties.MaximumMmTime, 500);
            _roomProperties.Add(FakePropertyCodes.RoomProperties.MaximumMatchMakingWeight, 1);


            _group = new MatchMakingGroup(_roomProperties, _logger, _taskSchedulerFactory, _playersManager,
                                          _packetSender, Mock.Of <IMmMetrics>(), _roomManager);
            _roomManager.Start(10000);
            _group.Start();
        }
        public void Setup()
        {
            // var config = new MmApplicationConfig("", "127.0.0.1", new List<ushort> {0}, "", 120000, GameProject.DefaultGame,"", 7002, isAuthOn:false);
            var config = new ApplicationConfig
            {
                PublicDomainNameOrAddress = "127.0.0.1",
                ListenPorts = new List <ushort> {
                    0
                },
                IsAuthOn       = false,
                BindToPortHttp = 7002
            };

            _logger = new ConsoleLogger();
            _roomPropertiesProvider = new FakeRoomPropertiesProvider(3, 500, 250, 3);

            _taskSchedulerFactory = new TaskSchedulerFactory(_logger);
            _playersManager       = new PlayersManager(Mock.Of <IMmMetrics>(), _logger);
            _packetSender         = Mock.Of <IShamanMessageSender>();
            _serverProvider       = new FakeServerProvider();
            _requestSender        = new FakeSender();
            _roomApiProvider      = new DefaultRoomApiProvider(_requestSender, _logger);
            _roomManager          = new RoomManager(_serverProvider, _logger, _taskSchedulerFactory, _roomApiProvider);

            _measures.Add(FakePropertyCodes.PlayerProperties.GameMode, 1);

            _playerProperties = new Dictionary <byte, object>
            {
                { FakePropertyCodes.PlayerProperties.GameMode, 1 }
            };

            _matchMakingGroupManager = new MatchMakingGroupManager(_logger, _taskSchedulerFactory, _playersManager,
                                                                   _packetSender, Mock.Of <IMmMetrics>(), _roomManager, _roomPropertiesProvider, config);
            _matchMakingGroupManager.AddMatchMakingGroup(_measures);
            _matchMakingGroupManager.Start(10000);
        }
Ejemplo n.º 9
0
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplication server,
                              IShamanLogger logger, IMatchMaker matchMaker, IServerActualizer serverActualizer, IMatchMakerServerInfoProvider serverInfoProvider, IBundleLoader bundleLoader)
        {
            serverActualizer.Start(Convert.ToInt32(Configuration["LauncherSettings:ActualizationIntervalMs"]));

            base.ConfigureMm(app, env, server, logger, matchMaker, serverInfoProvider, bundleLoader);
        }
Ejemplo n.º 10
0
 public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplication server,
                       IShamanLogger logger, IMatchMaker matchMaker, IMatchMakerServerInfoProvider serverInfoProvider, IBundleLoader bundleLoader)
 {
     base.ConfigureMm(app, env, server, logger, matchMaker, serverInfoProvider, bundleLoader);
 }