in src/Types/Encoder.cs [733:775]
public static void WriteString(ByteBuffer buffer, string value, bool smallEncoding)
{
if (value == null)
{
AmqpBitConverter.WriteUByte(buffer, FormatCode.Null);
}
else
{
#if NETMF || NETFX_CORE
byte[] data = Encoding.UTF8.GetBytes(value);
if (smallEncoding && data.Length <= byte.MaxValue)
{
AmqpBitConverter.WriteUByte(buffer, FormatCode.String8Utf8);
AmqpBitConverter.WriteUByte(buffer, (byte)data.Length);
AmqpBitConverter.WriteBytes(buffer, data, 0, data.Length);
}
else
{
AmqpBitConverter.WriteUByte(buffer, FormatCode.String32Utf8);
AmqpBitConverter.WriteUInt(buffer, (uint)data.Length);
AmqpBitConverter.WriteBytes(buffer, data, 0, data.Length);
}
#else
int byteCount = Encoding.UTF8.GetByteCount(value);
if (smallEncoding && byteCount <= byte.MaxValue)
{
AmqpBitConverter.WriteUByte(buffer, FormatCode.String8Utf8);
AmqpBitConverter.WriteUByte(buffer, (byte)byteCount);
}
else
{
AmqpBitConverter.WriteUByte(buffer, FormatCode.String32Utf8);
AmqpBitConverter.WriteUInt(buffer, (uint)byteCount);
}
buffer.ValidateWrite(byteCount);
Encoding.UTF8.GetBytes(value, 0, value.Length, buffer.Buffer, buffer.WritePos);
buffer.Append(byteCount);
#endif
}
}