private long SerializeInternal(WireMessage[] messages, Stream stream) { if (messages == null) { stream.WriteByte(NullFlag); return(1L); } var previousPos = stream.Position; using (var writer = new BinaryStreamWriter(stream)) { writer.Write(NotNullFlag); var length = messages.Length; writer.Write(length); if (length > 0) { for (var i = 0; i < length; i++) { Write(writer, messages[i]); } } } return(Math.Max(-1L, stream.Position - previousPos)); }
public void Reply(string[] p0) { var stream = new BinaryStreamWriter(); #if (DEBUG || LOG_PROTOCOL) Log.Debug("GetMails Reply. reqId: {0}, result: {1}", _reqId, Log.ObjToString(p0)); #endif stream.Write(2); stream.Write(_reqId); stream.Write(0); stream.Write(p0); _connection.Write(stream.Buffer, stream.Position); }
public void Error(int error, string msg) { var stream = new BinaryStreamWriter(); #if (DEBUG || LOG_PROTOCOL) Log.Debug("GetMails Failed. reqId: {0}, errCode:{1} errMsg:{2}", _reqId, error, msg); #endif stream.Write(2); stream.Write(_reqId); stream.Write(error); stream.Write(msg); _connection.Write(stream.Buffer, stream.Position); }
public override byte[] Serialize() { using (var stream = new MemoryStream()) { var writer = new BinaryStreamWriter(stream); writer.Write(Magic, ByteOrder.LittleEndian); writer.Write((byte)Type); writer.Write(Session.Id, ByteOrder.LittleEndian); return(stream.ToArray()); } }
public byte[] Serialize() { using (var stream = new MemoryStream()) { var writer = new BinaryStreamWriter(stream); writer.Write(Payload.Length + 10, ByteOrder.BigEndian); writer.Write(RequestId, ByteOrder.BigEndian); writer.Write((int)Type, ByteOrder.BigEndian); stream.Write(Payload); writer.Write(0, ByteOrder.BigEndian); return(stream.ToArray()); } }
private async Task PushBatch(ICollection <object[]> rows, ClickHouseType[] columnTypes, string[] columnNames, CancellationToken token) { using var stream = new MemoryStream() { Capacity = 512 * 1024 }; using (var gzipStream = new BufferedStream(new GZipStream(stream, CompressionLevel.Fastest, true), 256 * 1024)) { using var writer = new ExtendedBinaryWriter(gzipStream); using var streamer = new BinaryStreamWriter(writer); foreach (var row in rows) { for (var i = 0; i < row.Length; i++) { streamer.Write(columnTypes[i], row[i]); } } } stream.Seek(0, SeekOrigin.Begin); var query = $"INSERT INTO {DestinationTableName} ({string.Join(", ", columnNames)}) FORMAT RowBinary"; await connection.PostBulkDataAsync(query, stream, true, token).ConfigureAwait(false); Interlocked.Add(ref rowsWritten, rows.Count); }
private static void TestStreamWith <T>( T item, Action <T, IBinaryWriter> write, Func <IBinaryReader, T> read, Endianness endianness, bool useGarbage, Func <byte[], int, Endianness, IBinaryReader> createReader) { var stream = new MemoryStream(1); var writer = new BinaryStreamWriter(stream) { Endianness = endianness }; if (useGarbage) { writer.Write(Guid.NewGuid()); } var positionBefore = writer.Position; write(item, writer); var positionAfter = writer.Position; if (useGarbage) { writer.Write(Guid.NewGuid()); } var itemLength = positionAfter - positionBefore; itemLength.Should().BeGreaterThan(0); writer.Position.Should().Be(stream.Position); var reader = createReader(stream.ToArray(), (int)positionBefore, endianness); var restoredItem = read(reader); Compare(item, restoredItem); reader.Position.Should().Be(positionAfter); }
public static void Align(this BinaryStreamWriter streamWriter, int alignment) { var position = (int)streamWriter.BaseStream.Position; var paddingLength = (position + alignment - 1) / alignment * alignment - position; for (var i = 0; i < paddingLength; ++i) { streamWriter.Write((byte)0); } }
public override byte[] Serialize() { using (var stream = new MemoryStream()) { var writer = new BinaryStreamWriter(stream); writer.Write(Magic, ByteOrder.LittleEndian); writer.Write((byte)Type); writer.Write(Session.Id, ByteOrder.LittleEndian); writer.Write(ChallengeToken, ByteOrder.LittleEndian); if (StatsType == StatsType.Full) { writer.Write(0, ByteOrder.LittleEndian); } return(stream.ToArray()); } }
public static byte[] CreateClientMessage(byte[] message) { using (MemoryStream ms = new MemoryStream(8096)) { using (BinaryStreamWriter sw = new BinaryStreamWriter(ms)) { sw.Write(GatewayProtocolHeader.Clientway_STX); sw.Write((short)0); sw.Write((ushort)GatewayCommand.CLIENT_INFO_QUEST); sw.Write((byte)ClientPacketType.CLIENTPACKET_ALL); sw.Write(message); // byte[] buffer = ms.ToArray(); buffer[1] = (byte)buffer.Length; buffer[2] = (byte)(buffer.Length >> 8); // return(buffer); } } }
/// <summary> /// 发送命令 /// </summary> /// <returns></returns> private void SendMessage(GatewayCommand cmd) { using (MemoryStream ms = new MemoryStream()) { using (BinaryStreamWriter sw = new BinaryStreamWriter(ms)) { sw.Write(GatewayProtocolHeader.Gateway_STX); sw.Write((short)0); sw.Write((ushort)cmd); sw.Write((byte)ClientPacketType.CLIENTPACKET_ALL);//客户端类型 // // byte[] message = ms.ToArray(); // message[1] = (byte)message.Length; message[2] = (byte)(message.Length << 8); // listener.SendToServer(message); } } }
internal byte[] Serialize(object _object, Type _objectType) { try { // Serialize version info BinaryStreamWriter.WriteBinaryElement(BinaryElement.VERSION); BinaryStreamWriter.Write(Constants.kSerializationFormatVersion); // Serialize object value ObjectDataWriter.WriteObjectValue(BinaryStreamWriter, _object); // Get serialization data byte[] _serializationData = BinaryStreamWriter.ToBytes(); return(_serializationData); } finally { Reset(); } }