internal async ValueTask ProcessChannel(RabbitMQProtocolReader protocol, FrameHeader header, MethodHeader method, CancellationToken token = default) { switch (method.MethodId) { case 11: //open-ok { var openOk = await protocol.ReadChannelOpenOkAsync(token).ConfigureAwait(false); await _channelHandler.OnChannelOpenOkAsync(header.Channel).ConfigureAwait(false); break; } case 40: //close { var closeInfo = await protocol.ReadCloseAsync(token).ConfigureAwait(false);; await _channelHandler.OnChannelCloseAsync(header.Channel, closeInfo).ConfigureAwait(false); break; } case 41: //close-ok { var closeOk = await protocol.ReadCloseOkAsync(token).ConfigureAwait(false); await _channelHandler.OnChannelCloseOkAsync(header.Channel).ConfigureAwait(false); break; } default: throw new RabbitMQMethodException(nameof(ProcessChannel), method.ClassId, method.MethodId); } }