/// <summary> /// Write length + byte[] /// </summary> /// <param name="stream"></param> /// <param name="buffer"></param> /// <param name="length"></param> /// <returns></returns> internal static async Task WriteAsync(this Stream stream, byte[] buffer, SizeLength length) { byte[] bytesLength; switch (length) { case SizeLength.BYTE: bytesLength = new byte[] { (byte)buffer.Length }; break; case SizeLength.SHORT: bytesLength = BitConverter.GetBytes((Int16)buffer.Length); break; case SizeLength.INT: bytesLength = BitConverter.GetBytes(buffer.Length); break; case SizeLength.LONG: bytesLength = BitConverter.GetBytes(buffer.LongLength); break; default: throw new InvalidCastException("Can´t find match for length: " + length.ToString()); } await stream.WriteAsync(bytesLength); await stream.WriteAsync(buffer); }