internal async Task Handle_ContentHeader(ReadOnlySequence <byte> payload) { ulong Read() { var reader = new CustomBufferReader(payload); var classId = reader.ReadUInt16(); var weight = reader.ReadUInt16(); var bodySize = reader.ReadUInt64(); pendingDelivery.Properties = reader.ReadBasicProperties(); return(bodySize); } var size = Read(); if (size == 0) { pendingDelivery.Body = new byte[0]; await consumers[pendingDelivery.ConsumerTag](pendingDelivery); pendingDelivery = null; } }
async Task Handle_Close(ReadOnlySequence <byte> arguments) { IsOpen = false; await methods.Send_CloseOk(); if (replyIsExpected) { SendReply(); } void SendReply() { var reader = new CustomBufferReader(arguments); var replyCode = reader.ReadUInt16(); var replyText = reader.ReadShortString(); var method = reader.ReadUInt32(); var classId = method >> 16; var methodId = method << 16 >> 16; var exception = new Exception($"Channel Closed: {replyCode} {replyText}. ClassId: {classId} MethodId: {methodId}"); replyHandler(replyTaskCompletionSource, default, exception);