/// <summary> /// Writes a uuid (16-bytes) into the buffer and advance the buffer write cursor. /// </summary> /// <param name="buffer">The buffer to write.</param> /// <param name="data">The data to write.</param> public static void WriteUuid(ByteBuffer buffer, Guid data) { buffer.ValidateWrite(FixedWidth.Uuid); byte[] p = data.ToByteArray(); int pos = buffer.WritePos; if (AmqpBitConverter.IsLittleEndian) { buffer.Buffer[pos++] = p[3]; buffer.Buffer[pos++] = p[2]; buffer.Buffer[pos++] = p[1]; buffer.Buffer[pos++] = p[0]; buffer.Buffer[pos++] = p[5]; buffer.Buffer[pos++] = p[4]; buffer.Buffer[pos++] = p[7]; buffer.Buffer[pos++] = p[6]; Array.Copy(p, 8, buffer.Buffer, pos, 8); } else { Array.Copy(p, buffer.Buffer, FixedWidth.Uuid); } buffer.Append(FixedWidth.Uuid); }
/// <summary> /// Writes a 16-bit signed integer into the buffer and advance the buffer write cursor. /// </summary> /// <param name="buffer">The buffer to write.</param> /// <param name="data">The data to write.</param> public static void WriteShort(ByteBuffer buffer, short data) { buffer.ValidateWrite(FixedWidth.Short); buffer.Buffer[buffer.WritePos] = (byte)(data >> 8); buffer.Buffer[buffer.WritePos + 1] = (byte)data; buffer.Append(FixedWidth.Short); }
/// <summary> /// Writes bytes from one buffer into another. /// </summary> /// <param name="buffer">The destination buffer.</param> /// <param name="data">The source buffer</param> /// <param name="offset">The position in source buffer to start.</param> /// <param name="count">The number of bytes to write.</param> public static void WriteBytes(ByteBuffer buffer, byte[] data, int offset, int count) { buffer.ValidateWrite(count); Array.Copy(data, offset, buffer.Buffer, buffer.WritePos, count); buffer.Append(count); }
/// <summary> /// Writes a 32-bit signed integer into the buffer and advance the buffer write cursor. /// </summary> /// <param name="buffer">The buffer to write.</param> /// <param name="data">The data to write.</param> public static void WriteInt(ByteBuffer buffer, int data) { buffer.ValidateWrite(FixedWidth.Int); WriteInt(buffer.Buffer, buffer.WritePos, data); buffer.Append(FixedWidth.Int); }
/// <summary> /// Writes a signed byte into the buffer and advance the buffer write cursor. /// </summary> /// <param name="buffer">The buffer to write.</param> /// <param name="data">The data to write.</param> public static void WriteByte(ByteBuffer buffer, sbyte data) { buffer.ValidateWrite(FixedWidth.Byte); buffer.Buffer[buffer.WritePos] = (byte)data; buffer.Append(FixedWidth.Byte); }