BasicChat.Server.Program.Main C# (CSharp) Method

Main() static private method

static private Main ( string args ) : void
args string
return void
        static void Main(string[] args)
        {
            int port = 12345;

            var messageSerializer = new ProtobufMessageSerializer(
                new Message[] { new JoinRoom(), new Say(), new RoomEvent(), new JoinRoomResponse() },
                new MessageHeader[] { new OperationHeader() });

            var logger = new LoggerConfiguration()
                .ConfigureMOUSETypesDestructure()
                .MinimumLevel.Verbose()
                .WriteTo.ColoredConsole()
                .CreateLogger();

            var coreEventLogger = new SerilogCoreEvents(logger);

            var transport = new LidgrenNetProvider(
                new NetPeerConfiguration("Public")
                {
                    MaximumConnections = 10,
                    AcceptIncomingConnections = true,
                    Port = port,
                    LocalAddress = IPAddress.Loopback
                },
                new SerilogLidgrenEvents(logger));

            var netConfig = new NetNodeConfig()
            {
                ConnectTimeoutSec = 30,
                SendTimeoutSec = 30
            };

            var bufferPool = new WcfBufferPool();

            var node = new NetNode<NetChannel>("server", transport, coreEventLogger, messageSerializer, config: netConfig,
                channelFactory: (n, transportChannel) =>
                    new AsyncProcessingNetChannel(builder => builder
                        .UseFiber(Fiber, config => config
                            .Lock<Say>(LockType.Read)
                            .Lock<JoinRoom>(LockType.Write)
                            .Lock<PeerDisconnected>(LockType.Write))
                        .UseConfigurableDispatcher(config => config
                            .HandleMessage<Say>(OnSay)
                            .HandleMessage<JoinRoom>(OnRoomJoin)
                            .HandleMessage<PeerDisconnected>((msg, o) => OnRoomLeave(o.ReplyChannel))),
                        n, transportChannel, messageSerializer, coreEventLogger, netConfig, bufferPool));
            
            node.Start();
            Console.ReadKey();
        }