Beispiel #1
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 #2
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 #3
0
        internal static List <KeyValuePair <byte[], byte[]> > GetBytesFromDictionary <TK, TV>(IPacketConverter indexConverter, IPacketConverter elementConverter, IEnumerable <KeyValuePair <TK, TV> > enumerable)
        {
            var res    = new List <KeyValuePair <byte[], byte[]> >();
            var keygen = indexConverter as IPacketConverter <TK>;
            var valgen = elementConverter as IPacketConverter <TV>;

            foreach (var i in enumerable)
            {
                var key    = i.Key;
                var val    = i.Value;
                var keybuf = (keygen != null ? keygen.GetBytesWrap(key) : indexConverter.GetBytesWrap(key));
                var valbuf = (valgen != null ? valgen.GetBytesWrap(val) : elementConverter.GetBytesWrap(val));
                res.Add(new KeyValuePair <byte[], byte[]>(keybuf, valbuf));
            }
            return(res);
        }
Beispiel #4
0
 private IEnumerator <KeyValuePair <byte[], object> > Enumerator()
 {
     if (converter is IPacketConverter <TK> gen)
     {
         foreach (var i in dictionary)
         {
             yield return(new KeyValuePair <byte[], object>(gen.GetBytesWrap(i.Key), i.Value));
         }
     }
     else
     {
         foreach (var i in dictionary)
         {
             yield return(new KeyValuePair <byte[], object>(converter.GetBytesWrap(i.Key), i.Value));
         }
     }
     yield break;
 }
Beispiel #5
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 #6
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);
        }