public async Task Send_Consume(string queue, string consumerTag, bool autoAck, bool exclusive, Dictionary <string, object> arguments) { var buffer = await socket.GetWriteBuffer().ConfigureAwait(false); try { WritePayload(); await buffer.FlushAsync().ConfigureAwait(false); } finally { socket.ReleaseWriteBuffer(); } void WritePayload() { var writer = new CustomBufferWriter <PipeWriter>(buffer); var payloadSizeHeader = writer.WriteFrameHeader(FrameType.Method, channelNumber); writer.Write(Method.Basic.Consume); writer.Write(Reserved); writer.Write(Reserved); writer.WriteShortString(queue); writer.WriteShortString(consumerTag); writer.WriteBits(false, autoAck, exclusive); writer.WriteTable(arguments); writer.Commit(); BinaryPrimitives.WriteUInt32BigEndian(payloadSizeHeader, (uint)writer.BytesCommitted - FrameHeaderSize); writer.Write(FrameEnd); writer.Commit(); } }
public async Task Send_Declare(string exchangeName, string type, bool passive, bool durable, bool autoDelete, bool @internal, Dictionary <string, object> arguments) { var buffer = await socket.GetWriteBuffer().ConfigureAwait(false); try { WritePayload(); await buffer.FlushAsync().ConfigureAwait(false); } finally { socket.ReleaseWriteBuffer(); } void WritePayload() { var writer = new CustomBufferWriter <PipeWriter>(buffer); var payloadSizeHeader = writer.WriteFrameHeader(FrameType.Method, channelNumber); writer.Write(Method.Exchange.Declare); writer.Write(Reserved); writer.Write(Reserved); writer.WriteShortString(exchangeName); writer.WriteShortString(type); writer.WriteBits(passive, durable, autoDelete, @internal); writer.WriteTable(arguments); writer.Commit(); BinaryPrimitives.WriteUInt32BigEndian(payloadSizeHeader, (uint)writer.BytesCommitted - FrameHeaderSize); writer.Write(FrameEnd); writer.Commit(); } }