public UdpSendUtils(ByteArrayRudpStorage byteArrayRudpStorage, OutgoingMessagesStorage outgoingMessagesStorage, MessageFactory messageFactory) { rudpStorage = byteArrayRudpStorage; this.messageFactory = messageFactory; this.outgoingMessagesStorage = outgoingMessagesStorage; }
public MessageProcessor(InputEntitiesCreator inputEntitiesCreator, ExitEntitiesCreator exitEntitiesCreator, ByteArrayRudpStorage byteArrayRudpStorage, // UdpSendUtils udpSendUtils, IpAddressesStorage ipAddressesStorage) { pingMessageHandler = new PingMessageHandler(ipAddressesStorage); // rudpConfirmationSender = new RudpConfirmationSender(udpSendUtils); inputMessageHandler = new InputMessageHandler(inputEntitiesCreator); exitMessageHandler = new PlayerExitMessageHandler(exitEntitiesCreator); rudpConfirmationHandler = new RudpConfirmationReceiver(byteArrayRudpStorage); }
public MatchRemover(MatchStorage matchStorage, ByteArrayRudpStorage byteArrayRudpStorage, UdpSendUtils udpSendUtils, MatchmakerNotifier matchmakerNotifier, IpAddressesStorage ipAddressesStorage, MessageIdFactory messageIdFactory, MessagesPackIdFactory messagesPackIdFactory) { this.messagesPackIdFactory = messagesPackIdFactory; this.matchStorage = matchStorage; this.byteArrayRudpStorage = byteArrayRudpStorage; this.matchmakerNotifier = matchmakerNotifier; this.ipAddressesStorage = ipAddressesStorage; this.messageIdFactory = messageIdFactory; matchesToRemove = new ConcurrentQueue <int>(); playersMatchFinishNotifier = new PlayersMatchFinishNotifier(udpSendUtils, ipAddressesStorage); }
public RudpConfirmationReceiver(ByteArrayRudpStorage byteArrayRudpStorage) { this.byteArrayRudpStorage = byteArrayRudpStorage; }
public void Run() { if (matchmakerListenerCts != null) { throw new Exception("Сервер уже запущен"); } //Старт уведомления матчмейкера о смертях игроков и окончании матчей MatchmakerNotifier notifier = new MatchmakerNotifier(); matchmakerNotifierCts = notifier.StartThread(); //Создание структур данных для матчей matchStorage = new MatchStorage(); MessageIdFactory messageIdFactory = new MessageIdFactory(); MessageFactory messageFactory = new MessageFactory(messageIdFactory); InputEntitiesCreator inputEntitiesCreator = new InputEntitiesCreator(matchStorage); ExitEntitiesCreator exitEntitiesCreator = new ExitEntitiesCreator(matchStorage); ByteArrayRudpStorage byteArrayRudpStorage = new ByteArrayRudpStorage(); shittyUdpMediator = new ShittyUdpMediator(); MessagesPackIdFactory messagesPackIdFactory = new MessagesPackIdFactory(); IpAddressesStorage ipAddressesStorage = new IpAddressesStorage(); SimpleMessagesPacker simpleMessagesPacker = new SimpleMessagesPacker(PackingHelper.Mtu, shittyUdpMediator, messagesPackIdFactory); OutgoingMessagesStorage outgoingMessagesStorage = new OutgoingMessagesStorage(simpleMessagesPacker, ipAddressesStorage); UdpSendUtils udpSendUtils = new UdpSendUtils(byteArrayRudpStorage, outgoingMessagesStorage, messageFactory); MessageProcessor messageProcessor = new MessageProcessor(inputEntitiesCreator, exitEntitiesCreator, byteArrayRudpStorage, // udpSendUtils, ipAddressesStorage); shittyUdpMediator.SetProcessor(messageProcessor); matchRemover = new MatchRemover(matchStorage, byteArrayRudpStorage, udpSendUtils, notifier, ipAddressesStorage, messageIdFactory, messagesPackIdFactory); MatchFactory matchFactory = new MatchFactory(matchRemover, udpSendUtils, notifier, ipAddressesStorage, messageIdFactory, messagesPackIdFactory); MatchCreator matchCreator = new MatchCreator(matchFactory); MatchLifeCycleManager matchLifeCycleManager = new MatchLifeCycleManager(matchStorage, matchCreator, matchRemover); //Старт прослушки матчмейкера MatchModelMessageHandler matchModelMessageHandler = new MatchModelMessageHandler(matchCreator, matchStorage); MatchmakerListener matchmakerListener = new MatchmakerListener(matchModelMessageHandler, HttpPort); MonitorListener monitorListener = new MonitorListener(HttpPort); monitorListenerCts = monitorListener.StartThread(); matchmakerListenerCts = matchmakerListener.StartThread(); //Старт прослушки игроков shittyUdpMediator .SetupConnection(UdpPort) .StartReceiveThread(); RudpMessagesSender rudpMessagesSender = new RudpMessagesSender(byteArrayRudpStorage, matchStorage, udpSendUtils, ipAddressesStorage); GameEngineTicker gameEngineTicker = new GameEngineTicker(matchStorage, matchLifeCycleManager, inputEntitiesCreator, exitEntitiesCreator, rudpMessagesSender, outgoingMessagesStorage); //Старт тиков Chronometer chronometer = ChronometerFactory.Create(gameEngineTicker.Tick); chronometer.StartEndlessLoop(); }