public Server(ServerBuilderOptions options, ILogger logger, IServiceProvider serviceProvider, IPacketHandlers packetHandlers, ITcpConnections tcpConnections, IServerPacketProcessor serverPacketProcessor, ITcpSocketListenerFactory tcpSocketListenerFactory, IUdpSocketListenerFactory udpSocketListenerFactory, IBufferManager bufferManager, IServerInformation serverInformation, IPacketSerialiser packetSerialiser) { this.tcpConnections = tcpConnections; this.serverInformation = serverInformation; this.packetSerialiser = packetSerialiser; bufferManager.InitBuffer(); if (options.TcpPort > 0) { this.TcpListener = tcpSocketListenerFactory.Create(); } if (options.UdpPort > 0) { this.UdpListener = udpSocketListenerFactory.Create(); } Task.Factory.StartNew(() => { while (this.serverInformation.IsRunning) { if (this.eventArgs == null) { this.eventArgs = new ServerInformationEventArgs(); } this.eventArgs.ProcessedTcpPackets = serverInformation.ProcessedTcpPackets; this.eventArgs.InvalidTcpPackets = serverInformation.InvalidTcpPackets; this.eventArgs.ProcessedUdpPackets = serverInformation.ProcessedUdpPackets; this.eventArgs.InvalidUdpPackets = serverInformation.InvalidUdpPackets; this.eventArgs.TcpConnections = tcpConnections.GetConnections() .Count; this.ServerInformationUpdated?.Invoke(this, this.eventArgs); this.serverInformation.ProcessedTcpPackets = 0; this.serverInformation.InvalidTcpPackets = 0; this.serverInformation.ProcessedUdpPackets = 0; this.serverInformation.InvalidUdpPackets = 0; Thread.Sleep(10000); } }); }
public LoginServerHandler( NetPeer <TUser> netPeer, UserManager <TUser> userManager, ITcpConnections tcpConnections) { this.NetPeer = (NetServer <TUser>)netPeer; this.UserManager = userManager; this.TcpConnections = tcpConnections; }
public ChatServerHandler( NetPeer <TUser> netPeer, IChatService <TUser> chatService, ITcpConnections tcpConnections) { this.netPeer = (NetServer <TUser>)netPeer; this.chatService = (ChatService <TUser>)chatService; this.tcpConnections = tcpConnections; }
public DefaultTcpSocketListenerFactory(IServerPacketProcessor serverPacketProcessor, IBufferManager bufferManager, ILogger logger, ITcpConnections connections, ServerBuilderOptions options) { this.serverPacketProcessor = serverPacketProcessor; this.bufferManager = bufferManager; this.logger = logger; this.connections = connections; this.options = options; }
public TcpSocketListener(ServerBuilderOptions serverBuilderOptions, IServerPacketProcessor serverPacketProcessor, IBufferManager bufferManager, ILogger <TcpSocketListener> logger, ITcpConnections tcpConnections) { this.serverBuilderOptions = serverBuilderOptions; this.serverPacketProcessor = serverPacketProcessor; this.bufferManager = bufferManager; this.logger = logger; this.tcpConnections = tcpConnections; this.socketEventArgsPool = new ObjectPool <SocketAsyncEventArgs>(serverBuilderOptions.TcpMaxConnections); this.maxNumberAcceptedClients = new Semaphore(this.serverBuilderOptions.TcpMaxConnections, this.serverBuilderOptions.TcpMaxConnections); }