public ICollection <byte[]> GetChunks(int chunkSize = 65535, bool includeZeroEnding = true) { if (chunkSize > 65535) { throw new ArgumentOutOfRangeException(nameof(chunkSize), chunkSize, "Chunk size too big!"); } var fullMessage = new List <byte>(); fullMessage.Add(GetStructSize()); fullMessage.Add((byte)Signature); var packed = PackStream.Pack(Content); fullMessage.AddRange(packed); var header = GenerateChunkHeader(fullMessage.Count); for (int i = header.Length - 1; i >= 0; i--) { fullMessage.Insert(0, header[i]); } if (includeZeroEnding) { fullMessage.AddRange(ZeroEnding); } return(new List <byte[]> { fullMessage.ToArray() }); }
public static byte[] Pack <T>(IEnumerable <T> content) { var output = new List <byte>(); var contentAsList = content.ToList(); output.AddRange(GetMarker(contentAsList.Count)); for (var i = 0; i < contentAsList.Count; i++) { output.AddRange(PackStream.Pack(contentAsList[i])); } return(output.ToArray()); }
public byte[] GetBytes() { var output = new List <byte>(); output.AddRange(PackStream.Pack(Cypher)); if (Parameters == null) { output.AddRange(new byte[] { 0xA0 }); } else { throw new NotImplementedException(); } return(output.ToArray()); }
private static byte[] PackDictionary(IDictionary content) { var arguments = content.GetType().GenericTypeArguments; var keyType = arguments[0]; var valueType = arguments[1]; var bytes = new List <byte>(); bytes.AddRange(GetMarker(content.Count)); foreach (var item in content.Keys) { var keyBytes = PackStream.Pack(Convert.ChangeType(item, keyType)); bytes.AddRange(keyBytes); bytes.AddRange(PackStream.Pack(Convert.ChangeType(content[item], valueType))); } return(bytes.ToArray()); }
public byte[] GetBytes() { return(PackStream.Pack(Content)); }