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()); }
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()); }
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); }
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; }
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); }
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); }