public ServerNetworkGameStateContext(
     NetIncomingMessageBusService <NetServer> netIncomingMessageBusService,
     NetOutgoingMessageBusService <NetServer> netOutgoingMessageBusService,
     IInputTranslator <NetIncomingMessage, NetworkCommandConnection> networkCommandServerTranslator,
     IGameStateService <byte, TWorld> gameStateService,
     ILogger <byte> logger)
 {
     CurrentNetIncomingMessageBusService   = netIncomingMessageBusService ?? throw new ArgumentNullException(nameof(netIncomingMessageBusService));
     CurrentNetOutgoingMessageBusService   = netOutgoingMessageBusService ?? throw new ArgumentNullException(nameof(netOutgoingMessageBusService));
     CurrentNetworkCommandServerTranslator = networkCommandServerTranslator ?? throw new ArgumentNullException(nameof(networkCommandServerTranslator));
     GameStateRegistrar = gameStateService ?? throw new ArgumentNullException(nameof(gameStateService));
     Logger             = logger ?? throw new ArgumentNullException(nameof(logger));
 }
Exemplo n.º 2
0
        public NetworkCommandConnectionProducerService(
            NetIncomingMessageBusService <TNetPeer> netIncomingMessageBusService,
            IInputTranslator <NetIncomingMessage, NetworkCommandConnection> incomingMessageToNetworkCommandConnectionTranslator
            )
        {
            if (incomingMessageToNetworkCommandConnectionTranslator == null)
            {
                throw new ArgumentNullException(nameof(incomingMessageToNetworkCommandConnectionTranslator));
            }
            IncomingMessageToNetworkCommandConnectionTranslator = incomingMessageToNetworkCommandConnectionTranslator;

            if (netIncomingMessageBusService == null)
            {
                throw new ArgumentNullException(nameof(netIncomingMessageBusService));
            }
            NetIncomingMessageBusService = netIncomingMessageBusService;
        }
        /// <summary>
        /// Creates a server object ( NetServer ) for interacting with clients
        /// </summary>
        /// <param name="serverPeerName">the peer name of the server</param>
        /// <param name="serverIp">duh the ip OR what is not so plausible (the host name)</param>
        /// <param name="serverPort">the server port</param>
        private void CreateServer(string serverPeerName, string serverIp, int serverPort)
        {
            //net incoming message bus service creation
            var serverPeerConfig = new NetPeerConfiguration(serverPeerName)
            {
                Port = serverPort,
                AcceptIncomingConnections = true,
                EnableUPnP   = true,
                LocalAddress = IPAddress.Parse(serverIp)
            };

            Server       = new NetServer(serverPeerConfig);
            ServerInput  = new NetIncomingMessageBusService <NetServer>(Server);
            ServerOutput = new NetOutgoingMessageBusService <NetServer>(Server, SerializationAdapter);
            Server.Start();
            Console.WriteLine(Server.ToString());
        }
        private void Initialize()
        {
            Client = new NetClient(
                new NetPeerConfiguration(ClientConfiguration.ServerPeerName)
            {
                AcceptIncomingConnections = true,
                EnableUPnP         = true,
                AutoFlushSendQueue = true
            });
            Client.Start();
            Client.Connect(ClientConfiguration.ServerIp, ClientConfiguration.ServerPort);

            var serializerType = GetSerializer(ClientConfiguration.SerializationAdapterType);

            //var serializerType = ClientConfiguration.SerializationAdapterType.LoadType(true, false)?.FirstOrDefault();
            SerializationAdapter = Activator.CreateInstance(serializerType) as ISerializationAdapter;
            Input  = new NetIncomingMessageBusService <NetClient>(Client);
            Output = new NetOutgoingMessageBusService <NetClient>(Client, SerializationAdapter);
            NetworkCommandDataConverterService = new NetworkCommandDataConverterService(SerializationAdapter);
            NetIncomingMessageNetworkCommand   = new NetIncomingMessageNetworkCommandConnectionTranslator(new NetworkCommandTranslator(SerializationAdapter));
        }
Exemplo n.º 5
0
        private void Produce()
        {
            while (KeepProducing)
            {
                var messageChunk = NetIncomingMessageBusService.FetchMessageChunk();
                if (messageChunk != null)
                {
                    continue;
                }

                messageChunk.ToList().ForEach(message =>
                {
                    var translatedMessage = IncomingMessageToNetworkCommandConnectionTranslator.Translate(message);
                    if (translatedMessage == null)
                    {
                        return;
                    }
                    NetworkCommandConnectionQueue.Value.Enqueue(translatedMessage);
                });
            }
        }