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?
        }
Example #2
0
 /// <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)));
 }