public NetworkClientPacketPayloadReaderWriterDecorator(TClientType decoratedClient, THeaderReaderWriterType headerReaderWriter, INetworkSerializationService serializer, IPacketHeaderFactory <TPayloadConstraintType> packetHeaderFactory, int payloadBufferSize = 30000) { if (decoratedClient == null) { throw new ArgumentNullException(nameof(decoratedClient)); } if (serializer == null) { throw new ArgumentNullException(nameof(serializer)); } if (packetHeaderFactory == null) { throw new ArgumentNullException(nameof(packetHeaderFactory)); } if (payloadBufferSize <= 0) { throw new ArgumentOutOfRangeException(nameof(payloadBufferSize)); } DecoratedClient = decoratedClient; Serializer = serializer; PacketHeaderFactory = packetHeaderFactory; HeaderReaderWriter = headerReaderWriter; //One of the lobby packets is 14,000 bytes. We may even need bigger. PacketPayloadReadBuffer = new byte[payloadBufferSize]; //TODO: Do we need a larger buffer for any packets? }
/// <summary> /// Creates a <see cref="NetworkClientBase"/> client that can handle read and writing /// the specified generic <typeparamref name="TPayloadType"/>. /// </summary> /// <typeparam name="TPayloadType">The payload type.</typeparam> /// <returns>A network message client.</returns> public NetworkMessageClientBuilder <NetworkClientPacketPayloadReaderWriterDecorator <TNetworkType, THeaderReaderWriterType, TReadPayloadType, TWritePayloadType, TPayloadConstraintType>, TReadPayloadType, TWritePayloadType> For <TReadPayloadType, TWritePayloadType, TPayloadConstraintType>(IPacketHeaderFactory <TPayloadConstraintType> packetHeaderFactory) where TReadPayloadType : class, TPayloadConstraintType where TWritePayloadType : class, TPayloadConstraintType { return(new NetworkMessageClientBuilder <NetworkClientPacketPayloadReaderWriterDecorator <TNetworkType, THeaderReaderWriterType, TReadPayloadType, TWritePayloadType, TPayloadConstraintType>, TReadPayloadType, TWritePayloadType>(new NetworkClientPacketPayloadReaderWriterDecorator <TNetworkType, THeaderReaderWriterType, TReadPayloadType, TWritePayloadType, TPayloadConstraintType>(Client, HeaderReaderWriter, Serializer, packetHeaderFactory))); }