public TcpPipelineSocketListenerFactory(ServerBuilderOptions options, ILogger logger, IServerPacketProcessor serverPacketProcessor) { this.options = options; this.logger = logger; this.serverPacketProcessor = serverPacketProcessor; }
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 DefaultUdpSocketListenerFactory(ServerBuilderOptions options, ILogger <UdpClientListener> logger, IServerPacketProcessor serverPacketProcessor, IServerInformation serverInformation) { this.options = options; this.logger = logger; this.serverPacketProcessor = serverPacketProcessor; this.serverInformation = serverInformation; }
public UdpSocketListener(ServerBuilderOptions options, ILogger <UdpSocketListener> logger, IServerPacketProcessor serverPacketProcessor, IBufferManager bufferManager) { this.options = options; this.logger = logger; this.serverPacketProcessor = serverPacketProcessor; this.bufferManager = bufferManager; this.socketEventArgsPool = new ObjectPool <SocketAsyncEventArgs>(options.UdpSocketObjectPoolSize); }
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 DefaultUdpSocketListenerFactory(ServerBuilderOptions options, ILogger logger, IServerPacketProcessor serverPacketProcessor, IBufferManager bufferManager, IServerInformation serverInformation) { this.options = options; this.logger = logger; this.serverPacketProcessor = serverPacketProcessor; this.bufferManager = bufferManager; this.serverInformation = serverInformation; }
public TcpPipelineSocketListener(ServerBuilderOptions options, ILogger logger, IServerPacketProcessor serverPacketProcessor) { this.options = options; this.logger = logger; this.serverPacketProcessor = serverPacketProcessor; this.objectPool = new ObjectPool <bool[]>(options.TcpMaxConnections); for (var i = 0; i < options.TcpMaxConnections; i++) { this.objectPool.Push(new bool[options.PacketSizeBuffer]); } }
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); }
public UdpClientListener(ServerBuilderOptions options, ILogger <UdpClientListener> logger, IServerPacketProcessor serverPacketProcessor, IServerInformation serverInformation) { this.options = options; this.logger = logger; this.serverPacketProcessor = serverPacketProcessor; this.serverInformation = serverInformation; endPointPool = new ObjectPool <EndPoint>(this.options.UdpSocketObjectPoolSize); for (var i = 0; i < endPointPool.Capacity; i++) { endPointPool.Push(new IPEndPoint(IPAddress.Loopback, this.options.UdpPort)); } }