Beispiel #1
0
        private static List <T> GetList <T>(PacketReader reader, IPacketConverter converter)
        {
            var itm = reader.GetList();
            var len = itm.Count;

            if (len < 1)
            {
                return(new List <T>());
            }
            var lst = new List <T>(len);
            var gen = converter as IPacketConverter <T>;

            try
            {
                if (gen != null)
                {
                    for (int i = 0; i < len; i++)
                    {
                        lst.Add(gen.GetValue(itm[i].element));
                    }
                }
                else
                {
                    for (int i = 0; i < len; i++)
                    {
                        lst.Add((T)converter.GetValue(itm[i].element));
                    }
                }
            }
            catch (Exception ex) when(PacketException.WrapFilter(ex))
            {
                throw PacketException.ConvertError(ex);
            }
            return(lst);
        }
Beispiel #2
0
        internal static byte[][] GetBytesFromEnumerable <T>(IPacketConverter converter, IEnumerable <T> enumerable)
        {
            if (enumerable is ICollection <T> col && col.Count > 15)
            {
                return(GetBytesFromArray(converter, col.ToArray()));
            }

            var res = new List <byte[]>();

            if (converter is IPacketConverter <T> gen)
            {
                foreach (var i in enumerable)
                {
                    res.Add(gen.GetBytesWrap(i));
                }
            }
            else
            {
                foreach (var i in enumerable)
                {
                    res.Add(converter.GetBytesWrap(i));
                }
            }
            return(res.ToArray());
        }
Beispiel #3
0
        public PacketParser(ILogger logger)
        {
            ClassLogger = logger;

            SerializerRegister = new SerializationManager();
            Converter          = new PacketConverter();
        }
Beispiel #4
0
 private static IEnumerator Enumerator(List <PacketReader> list, IPacketConverter converter)
 {
     for (int idx = 0; idx < list.Count; idx++)
     {
         yield return(converter.GetValueWrap(list[idx].element));
     }
 }
Beispiel #5
0
        public TcpConnection(Socket socket, IPacketConverter packetConverter)
        {
            Id = Guid.NewGuid().ToString();

            _socket          = socket;
            _packetConverter = packetConverter;
        }
Beispiel #6
0
        private static T[] GetArray <T>(PacketReader reader, IPacketConverter converter)
        {
            var itm = reader.GetList();
            var len = itm.Count;

            if (len < 1)
            {
                return(new T[0]);
            }
            var arr = new T[len];
            var gen = converter as IPacketConverter <T>;

            try
            {
                if (gen != null)
                {
                    for (int i = 0; i < len; i++)
                    {
                        arr[i] = gen.GetValue(itm[i].element);
                    }
                }
                else
                {
                    for (int i = 0; i < len; i++)
                    {
                        arr[i] = (T)converter.GetValue(itm[i].element);
                    }
                }
            }
            catch (Exception ex) when(PacketException.WrapFilter(ex))
            {
                throw PacketException.ConvertError(ex);
            }
            return(arr);
        }
Beispiel #7
0
 internal static List <T> ToList <T>(PacketReader reader, IPacketConverter converter)
 {
     if (converter.Length < 1)
     {
         return(GetList <T>(reader, converter));
     }
     return(reader.element.ToList <T>(converter));
 }
Beispiel #8
0
 internal static T[] ToArray <T>(PacketReader reader, IPacketConverter converter)
 {
     if (converter.Length < 1)
     {
         return(GetArray <T>(reader, converter));
     }
     return(reader.element.ToArray <T>(converter));
 }
 public void SetUp()
 {
     request = new SomeRequest();
     serverAddress = Mock.Of<IServerAddress>();
     packetReceiver = Mock.Of<IPacketReceiver>();
     packetConverter = Mock.Of<IPacketConverter>();
     responseReceiver = new ResponseReveiver(packetReceiver, packetConverter);
 }
 public MovePacketSerializer(
     IPacketConverter <Guid> guidSerializer,
     IPacketConverter <Vector3> vectorSerializer,
     IPacketConverter <Quaternion> quaternionSerializer)
 {
     _guidSerializer       = guidSerializer;
     _vectorSerializer     = vectorSerializer;
     _quaternionSerializer = quaternionSerializer;
 }
Beispiel #11
0
        internal T NextAuto <T>(ref int index, IPacketConverter converter)
        {
            var tmp = index;

            MoveNext(converter.Length, ref tmp, out var len);
            var res = converter.GetValueWrapAuto <T>(buffer, tmp, len);

            index = tmp + len;
            return(res);
        }
Beispiel #12
0
 public void Setup()
 {
     _mockPacket             = new MockPacket();
     _packetHeader           = typeof(MockPacket).AssemblyQualifiedName;
     _serializatedMockPacket = "Dummy";
     _mockConverter          = Substitute.For <IPacketConverter <MockPacket> >();
     _mockConverter.Serialize(_mockPacket).Returns(_serializatedMockPacket);
     _mockConverter.Deserialize(_serializatedMockPacket).Returns(_mockPacket);
     _serializer = new PacketSerializer();
 }
Beispiel #13
0
        internal static byte[][] GetBytesFromEnumerableNonGeneric(IPacketConverter converter, IEnumerable enumerable)
        {
            var lst = new List <byte[]>();

            foreach (var i in enumerable)
            {
                lst.Add(converter.GetBytesWrap(i));
            }
            return(lst.ToArray());
        }
Beispiel #14
0
 internal static T GetValueWrap <T>(this IPacketConverter <T> converter, byte[] buffer, int offset, int length)
 {
     try
     {
         return(converter.GetValue(buffer, offset, length));
     }
     catch (Exception ex) when(PacketException.WrapFilter(ex))
     {
         throw PacketException.ConvertError(ex);
     }
 }
Beispiel #15
0
 internal static T GetValueWrap <T>(this IPacketConverter <T> converter, Element element)
 {
     try
     {
         return(converter.GetValue(element.buffer, element.offset, element.length));
     }
     catch (Exception ex) when(PacketException.WrapFilter(ex))
     {
         throw PacketException.ConvertError(ex);
     }
 }
        public void Setup()
        {
            _packet = new SpawnPacket(Guid.NewGuid(), new Vector3(), new Quaternion(), "Cat");

            _mockGuidSerializer       = Substitute.For <IPacketConverter <Guid> >();
            _mockVectorSerializer     = Substitute.For <IPacketConverter <Vector3> >();
            _mockQuaternionSerializer = Substitute.For <IPacketConverter <Quaternion> >();

            _serializer = new SpawnPacketSerializer(
                _mockGuidSerializer,
                _mockVectorSerializer,
                _mockQuaternionSerializer);
        }
Beispiel #17
0
 internal static object GetValueWrap(this IPacketConverter converter, byte[] buffer, int offset, int length, bool check = false)
 {
     try
     {
         if (check && converter.Length > length)
         {
             throw PacketException.Overflow();
         }
         return(converter.GetValue(buffer, offset, length));
     }
     catch (Exception ex) when(PacketException.WrapFilter(ex))
     {
         throw PacketException.ConvertError(ex);
     }
 }
Beispiel #18
0
        internal List <T> ToList <T>(IPacketConverter converter)
        {
            if (length < 1)
            {
                return(new List <T>());
            }
            if (typeof(T) == typeof(byte))
            {
                return(new List <T>((T[])GetByteArray()));
            }
            else if (typeof(T) == typeof(sbyte))
            {
                return(new List <T>((T[])GetSByteArray()));
            }

            var def = converter.Length;
            var sum = Math.DivRem(length, def, out var rem);

            if (rem != 0)
            {
                throw PacketException.Overflow();
            }
            var lst = new List <T>(sum);
            var gen = converter as IPacketConverter <T>;

            try
            {
                if (gen != null)
                {
                    for (int idx = 0; idx < sum; idx++)
                    {
                        lst.Add(gen.GetValue(buffer, offset + idx * def, def));
                    }
                }
                else
                {
                    for (int idx = 0; idx < sum; idx++)
                    {
                        lst.Add((T)converter.GetValue(buffer, offset + idx * def, def));
                    }
                }
            }
            catch (Exception ex) when(PacketException.WrapFilter(ex))
            {
                throw PacketException.ConvertError(ex);
            }
            return(lst);
        }
Beispiel #19
0
        internal static byte[][] GetBytesFromList <T>(IPacketConverter converter, List <T> list)
        {
            var res = new byte[list.Count][];

            if (converter is IPacketConverter <T> gen)
            {
                for (int i = 0; i < list.Count; i++)
                {
                    res[i] = gen.GetBytesWrap(list[i]);
                }
            }
            else
            {
                for (int i = 0; i < list.Count; i++)
                {
                    res[i] = converter.GetBytesWrap(list[i]);
                }
            }
            return(res);
        }
Beispiel #20
0
        internal static byte[][] GetBytesFromArray <T>(IPacketConverter converter, T[] array)
        {
            var res = new byte[array.Length][];

            if (converter is IPacketConverter <T> gen)
            {
                for (int i = 0; i < array.Length; i++)
                {
                    res[i] = gen.GetBytesWrap(array[i]);
                }
            }
            else
            {
                for (int i = 0; i < array.Length; i++)
                {
                    res[i] = converter.GetBytesWrap(array[i]);
                }
            }
            return(res);
        }
Beispiel #21
0
 internal static byte[] GetBytesWrap <T>(this IPacketConverter <T> converter, T value)
 {
     try
     {
         var buf = converter.GetBytes(value);
         if (buf == null)
         {
             buf = s_empty_bytes;
         }
         var len = converter.Length;
         if (len > 0 && len != buf.Length)
         {
             throw PacketException.ConvertMismatch(len);
         }
         return(buf);
     }
     catch (Exception ex) when(PacketException.WrapFilter(ex))
     {
         throw PacketException.ConvertError(ex);
     }
 }
Beispiel #22
0
        public AbstractTcpServer(IHost host)
        {
            _host = host;

            _serviceProvider = _host.Services;

            _tasksCancellationTokenSource = new CancellationTokenSource();
            _tasksCancellationToken       = _tasksCancellationTokenSource.Token;

            _configuration = _serviceProvider.GetRequiredService <IOptions <ServerOptions> >().Value;

            _timerService = _serviceProvider.GetRequiredService <TimerService>();

            _connectionManager = _serviceProvider.GetRequiredService <ConnectionManager>();

            _packetSerializer = _serviceProvider.GetRequiredService <IPacketConverter>();

            _logger = _serviceProvider.GetRequiredService <ILogger <AbstractTcpServer> >();

            _serverTasks = new ConcurrentBag <Task>();

            _packetHandlers = new Dictionary <string, IPacketHandler>();
        }
Beispiel #23
0
 private static IEnumerator Enumerator(byte[] buffer, int offset, int count, int define, IPacketConverter converter)
 {
     for (int idx = 0; idx < count; idx++)
     {
         yield return(converter.GetValueWrap(buffer, offset + define * idx, define));
     }
 }
Beispiel #24
0
 internal Enumerable(PacketReader reader, IPacketConverter converter)
 {
     this.reader    = reader;
     this.converter = converter;
 }
Beispiel #25
0
 internal T NextAuto <T>(IPacketConverter converter) => element.NextAuto <T>(ref index, converter);
Beispiel #26
0
 internal object Next(IPacketConverter converter) => element.Next(ref index, converter);
Beispiel #27
0
 internal static object GetValue(this IPacketConverter converter, Element element)
 {
     return(converter.GetValue(element.buffer, element.offset, element.length));
 }
Beispiel #28
0
 public PingRequestPacketHandler(ILogger <PingRequestPacketHandler> logger, IPacketConverter packetSerializer) : base(packetSerializer)
 {
     _logger = logger;
 }
Beispiel #29
0
 internal static T GetValue <T>(this IPacketConverter <T> converter, Element element)
 {
     return(converter.GetValue(element.buffer, element.offset, element.length));
 }
Beispiel #30
0
 internal static T GetValueWrapAuto <T>(this IPacketConverter converter, Element element, bool check = false)
 {
     return(GetValueWrapAuto <T>(converter, element.buffer, element.offset, element.length, check));
 }
 public ResponseReveiver(IPacketReceiver packetReceiver, IPacketConverter packetConverter)
 {
     this.packetReceiver = packetReceiver;
     this.packetConverter = packetConverter;
 }
Beispiel #32
0
 public PacketHandler(IPacketConverter packetConverter)
 {
     _packetConverter = packetConverter;
 }