diff --git a/projects/RabbitMQ.Client/client/api/IMethod.cs b/projects/RabbitMQ.Client/client/api/IMethod.cs deleted file mode 100644 index 047f167277..0000000000 --- a/projects/RabbitMQ.Client/client/api/IMethod.cs +++ /dev/null @@ -1,66 +0,0 @@ -// This source code is dual-licensed under the Apache License, version -// 2.0, and the Mozilla Public License, version 2.0. -// -// The APL v2.0: -// -//--------------------------------------------------------------------------- -// Copyright (c) 2007-2020 VMware, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//--------------------------------------------------------------------------- -// -// The MPL v2.0: -// -//--------------------------------------------------------------------------- -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at https://mozilla.org/MPL/2.0/. -// -// Copyright (c) 2007-2020 VMware, Inc. All rights reserved. -//--------------------------------------------------------------------------- - -namespace RabbitMQ.Client -{ - /// - /// A decoded AMQP method frame. - /// - /// - /// - /// AMQP methods can be RPC requests, RPC responses, exceptions - /// (ChannelClose, ConnectionClose), or one-way asynchronous - /// messages. Currently this information is not recorded in their - /// type or interface: it is implicit in the way the method is - /// used, and the way it is defined in the AMQP specification. A - /// future revision of the RabbitMQ .NET client library may extend - /// the IMethod interface to represent this information - /// explicitly. - /// - /// - public interface IMethod - { - /// - /// Retrieves the class ID number of this method, as defined in the AMQP specification XML. - /// - ushort ProtocolClassId { get; } - - /// - /// Retrieves the method ID number of this method, as defined in the AMQP specification XML. - /// - ushort ProtocolMethodId { get; } - - /// - /// Retrieves the name of this method - for debugging use. - /// - string ProtocolMethodName { get; } - } -} diff --git a/projects/RabbitMQ.Client/client/exceptions/UnexpectedMethodException.cs b/projects/RabbitMQ.Client/client/exceptions/UnexpectedMethodException.cs index 76c2fb390c..590a8be199 100644 --- a/projects/RabbitMQ.Client/client/exceptions/UnexpectedMethodException.cs +++ b/projects/RabbitMQ.Client/client/exceptions/UnexpectedMethodException.cs @@ -41,12 +41,26 @@ namespace RabbitMQ.Client.Exceptions #endif public class UnexpectedMethodException : ProtocolViolationException { - public UnexpectedMethodException(IMethod method) + public UnexpectedMethodException(ushort classId, ushort methodId, string methodName) { - Method = method; + ProtocolClassId = classId; + ProtocolMethodId = methodId; + ProtocolMethodName = methodName; } - ///The unexpected reply method. - public IMethod Method { get; private set; } + /// + /// Retrieves the class ID number of this method, as defined in the AMQP specification XML. + /// + public ushort ProtocolClassId { get; } + + /// + /// Retrieves the method ID number of this method, as defined in the AMQP specification XML. + /// + public ushort ProtocolMethodId { get; } + + /// + /// Retrieves the name of this method - for debugging use. + /// + public string ProtocolMethodName { get; } } } diff --git a/projects/RabbitMQ.Client/client/framing/BasicAck.cs b/projects/RabbitMQ.Client/client/framing/BasicAck.cs index c6d2e581c8..321fafea2f 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicAck.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicAck.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class BasicAck : Client.Impl.MethodBase @@ -46,8 +48,7 @@ public BasicAck(ulong DeliveryTag, bool Multiple) _multiple = Multiple; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Ack; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicAck; public override string ProtocolMethodName => "basic.ack"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicCancel.cs b/projects/RabbitMQ.Client/client/framing/BasicCancel.cs index 6ac5a5d5bb..48f2ef9bd3 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicCancel.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicCancel.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -48,8 +49,7 @@ public BasicCancel(string ConsumerTag, bool Nowait) _nowait = Nowait; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Cancel; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicCancel; public override string ProtocolMethodName => "basic.cancel"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicCancelOk.cs b/projects/RabbitMQ.Client/client/framing/BasicCancelOk.cs index 4363c1ae5d..645cd604fc 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicCancelOk.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicCancelOk.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -46,8 +47,7 @@ public BasicCancelOk(string ConsumerTag) _consumerTag = ConsumerTag; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.CancelOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicCancelOk; public override string ProtocolMethodName => "basic.cancel-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicConsume.cs b/projects/RabbitMQ.Client/client/framing/BasicConsume.cs index a46afd86c4..7373133c1e 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicConsume.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicConsume.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -62,8 +63,7 @@ public BasicConsume(ushort Reserved1, string Queue, string ConsumerTag, bool NoL _arguments = Arguments; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Consume; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicConsume; public override string ProtocolMethodName => "basic.consume"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicConsumeOk.cs b/projects/RabbitMQ.Client/client/framing/BasicConsumeOk.cs index 46c7f50950..87ae07838c 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicConsumeOk.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicConsumeOk.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -46,8 +47,7 @@ public BasicConsumeOk(string ConsumerTag) _consumerTag = ConsumerTag; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.ConsumeOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicConsumeOk; public override string ProtocolMethodName => "basic.consume-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicDeliver.cs b/projects/RabbitMQ.Client/client/framing/BasicDeliver.cs index 5758a78f78..7316addb42 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicDeliver.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicDeliver.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -54,8 +55,7 @@ public BasicDeliver(string ConsumerTag, ulong DeliveryTag, bool Redelivered, str _routingKey = RoutingKey; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Deliver; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicDeliver; public override string ProtocolMethodName => "basic.deliver"; public override bool HasContent => true; diff --git a/projects/RabbitMQ.Client/client/framing/BasicGet.cs b/projects/RabbitMQ.Client/client/framing/BasicGet.cs index e8a2f6e24d..cb9055e594 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicGet.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicGet.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -50,8 +51,7 @@ public BasicGet(ushort Reserved1, string Queue, bool NoAck) _noAck = NoAck; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Get; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicGet; public override string ProtocolMethodName => "basic.get"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicGetEmpty.cs b/projects/RabbitMQ.Client/client/framing/BasicGetEmpty.cs index 089253c0ee..6a9dd00f85 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicGetEmpty.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicGetEmpty.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -46,8 +47,7 @@ public BasicGetEmpty(string Reserved1) _reserved1 = Reserved1; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.GetEmpty; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicGetEmpty; public override string ProtocolMethodName => "basic.get-empty"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicGetOk.cs b/projects/RabbitMQ.Client/client/framing/BasicGetOk.cs index 9523206da7..594f4583d9 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicGetOk.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicGetOk.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -54,8 +55,7 @@ public BasicGetOk(ulong DeliveryTag, bool Redelivered, string Exchange, string R _messageCount = MessageCount; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.GetOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicGetOk; public override string ProtocolMethodName => "basic.get-ok"; public override bool HasContent => true; diff --git a/projects/RabbitMQ.Client/client/framing/BasicNack.cs b/projects/RabbitMQ.Client/client/framing/BasicNack.cs index cfe44251fa..0bd67b7555 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicNack.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicNack.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class BasicNack : Client.Impl.MethodBase @@ -48,8 +50,7 @@ public BasicNack(ulong DeliveryTag, bool Multiple, bool Requeue) _requeue = Requeue; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Nack; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicNack; public override string ProtocolMethodName => "basic.nack"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicPublish.cs b/projects/RabbitMQ.Client/client/framing/BasicPublish.cs index e7a0f949c4..78e6d9e055 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicPublish.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicPublish.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -54,8 +55,7 @@ public BasicPublish(ushort Reserved1, string Exchange, string RoutingKey, bool M _immediate = Immediate; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Publish; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicPublish; public override string ProtocolMethodName => "basic.publish"; public override bool HasContent => true; diff --git a/projects/RabbitMQ.Client/client/framing/BasicQos.cs b/projects/RabbitMQ.Client/client/framing/BasicQos.cs index f90b7da81e..cc5ce5bb1d 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicQos.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicQos.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class BasicQos : Client.Impl.MethodBase @@ -48,8 +50,7 @@ public BasicQos(uint PrefetchSize, ushort PrefetchCount, bool Global) _global = Global; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Qos; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicQos; public override string ProtocolMethodName => "basic.qos"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicQosOk.cs b/projects/RabbitMQ.Client/client/framing/BasicQosOk.cs index 14f8404453..323ff99d49 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicQosOk.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicQosOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class BasicQosOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public BasicQosOk() { } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.QosOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicQosOk; public override string ProtocolMethodName => "basic.qos-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicRecover.cs b/projects/RabbitMQ.Client/client/framing/BasicRecover.cs index bd764e9c91..2d53f93368 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicRecover.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicRecover.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class BasicRecover : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public BasicRecover(bool Requeue) _requeue = Requeue; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Recover; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicRecover; public override string ProtocolMethodName => "basic.recover"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicRecoverAsync.cs b/projects/RabbitMQ.Client/client/framing/BasicRecoverAsync.cs index 2fba723682..ba063b03a4 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicRecoverAsync.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicRecoverAsync.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class BasicRecoverAsync : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public BasicRecoverAsync(bool Requeue) _requeue = Requeue; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.RecoverAsync; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicRecoverAsync; public override string ProtocolMethodName => "basic.recover-async"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicRecoverOk.cs b/projects/RabbitMQ.Client/client/framing/BasicRecoverOk.cs index a2c104bbe1..b4e0dd8d3b 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicRecoverOk.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicRecoverOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class BasicRecoverOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public BasicRecoverOk() { } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.RecoverOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicRecoverOk; public override string ProtocolMethodName => "basic.recover-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicReject.cs b/projects/RabbitMQ.Client/client/framing/BasicReject.cs index e02e4551c0..beb404504a 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicReject.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicReject.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class BasicReject : Client.Impl.MethodBase @@ -46,8 +48,7 @@ public BasicReject(ulong DeliveryTag, bool Requeue) _requeue = Requeue; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Reject; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicReject; public override string ProtocolMethodName => "basic.reject"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/BasicReturn.cs b/projects/RabbitMQ.Client/client/framing/BasicReturn.cs index c271d88bad..3fc125171f 100644 --- a/projects/RabbitMQ.Client/client/framing/BasicReturn.cs +++ b/projects/RabbitMQ.Client/client/framing/BasicReturn.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -52,8 +53,7 @@ public BasicReturn(ushort ReplyCode, string ReplyText, string Exchange, string R _routingKey = RoutingKey; } - public override ushort ProtocolClassId => ClassConstants.Basic; - public override ushort ProtocolMethodId => BasicMethodConstants.Return; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.BasicReturn; public override string ProtocolMethodName => "basic.return"; public override bool HasContent => true; diff --git a/projects/RabbitMQ.Client/client/framing/ChannelClose.cs b/projects/RabbitMQ.Client/client/framing/ChannelClose.cs index 8c82a16e62..74dab73704 100644 --- a/projects/RabbitMQ.Client/client/framing/ChannelClose.cs +++ b/projects/RabbitMQ.Client/client/framing/ChannelClose.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -52,8 +53,7 @@ public ChannelClose(ushort ReplyCode, string ReplyText, ushort ClassId, ushort M _methodId = MethodId; } - public override ushort ProtocolClassId => ClassConstants.Channel; - public override ushort ProtocolMethodId => ChannelMethodConstants.Close; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ChannelClose; public override string ProtocolMethodName => "channel.close"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ChannelCloseOk.cs b/projects/RabbitMQ.Client/client/framing/ChannelCloseOk.cs index 1dc5601b9d..243b0b4ebb 100644 --- a/projects/RabbitMQ.Client/client/framing/ChannelCloseOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ChannelCloseOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ChannelCloseOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public ChannelCloseOk() { } - public override ushort ProtocolClassId => ClassConstants.Channel; - public override ushort ProtocolMethodId => ChannelMethodConstants.CloseOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ChannelCloseOk; public override string ProtocolMethodName => "channel.close-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ChannelFlow.cs b/projects/RabbitMQ.Client/client/framing/ChannelFlow.cs index 7d92c2d1eb..4fc6da12c8 100644 --- a/projects/RabbitMQ.Client/client/framing/ChannelFlow.cs +++ b/projects/RabbitMQ.Client/client/framing/ChannelFlow.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ChannelFlow : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public ChannelFlow(bool Active) _active = Active; } - public override ushort ProtocolClassId => ClassConstants.Channel; - public override ushort ProtocolMethodId => ChannelMethodConstants.Flow; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ChannelFlow; public override string ProtocolMethodName => "channel.flow"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ChannelFlowOk.cs b/projects/RabbitMQ.Client/client/framing/ChannelFlowOk.cs index 2a98104ad6..82325a9cd1 100644 --- a/projects/RabbitMQ.Client/client/framing/ChannelFlowOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ChannelFlowOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ChannelFlowOk : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public ChannelFlowOk(bool Active) _active = Active; } - public override ushort ProtocolClassId => ClassConstants.Channel; - public override ushort ProtocolMethodId => ChannelMethodConstants.FlowOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ChannelFlowOk; public override string ProtocolMethodName => "channel.flow-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ChannelOpen.cs b/projects/RabbitMQ.Client/client/framing/ChannelOpen.cs index 45165638bd..c1b32ec897 100644 --- a/projects/RabbitMQ.Client/client/framing/ChannelOpen.cs +++ b/projects/RabbitMQ.Client/client/framing/ChannelOpen.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -46,8 +47,7 @@ public ChannelOpen(string Reserved1) _reserved1 = Reserved1; } - public override ushort ProtocolClassId => ClassConstants.Channel; - public override ushort ProtocolMethodId => ChannelMethodConstants.Open; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ChannelOpen; public override string ProtocolMethodName => "channel.open"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ChannelOpenOk.cs b/projects/RabbitMQ.Client/client/framing/ChannelOpenOk.cs index 464a140059..2d3633f6da 100644 --- a/projects/RabbitMQ.Client/client/framing/ChannelOpenOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ChannelOpenOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ChannelOpenOk : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public ChannelOpenOk(byte[] Reserved1) _reserved1 = Reserved1; } - public override ushort ProtocolClassId => ClassConstants.Channel; - public override ushort ProtocolMethodId => ChannelMethodConstants.OpenOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ChannelOpenOk; public override string ProtocolMethodName => "channel.open-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ClassId.cs b/projects/RabbitMQ.Client/client/framing/ClassId.cs deleted file mode 100644 index a29e7aa90c..0000000000 --- a/projects/RabbitMQ.Client/client/framing/ClassId.cs +++ /dev/null @@ -1,45 +0,0 @@ -// This source code is dual-licensed under the Apache License, version -// 2.0, and the Mozilla Public License, version 2.0. -// -// The APL v2.0: -// -//--------------------------------------------------------------------------- -// Copyright (c) 2007-2020 VMware, Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -//--------------------------------------------------------------------------- -// -// The MPL v2.0: -// -//--------------------------------------------------------------------------- -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at https://mozilla.org/MPL/2.0/. -// -// Copyright (c) 2007-2020 VMware, Inc. All rights reserved. -//--------------------------------------------------------------------------- - -namespace RabbitMQ.Client.Framing.Impl -{ - internal enum ClassId - { - Connection = 10, - Channel = 20, - Exchange = 40, - Queue = 50, - Basic = 60, - Tx = 90, - Confirm = 85, - Invalid = -1, - } -} diff --git a/projects/RabbitMQ.Client/client/framing/ConfirmSelect.cs b/projects/RabbitMQ.Client/client/framing/ConfirmSelect.cs index a7af79ee48..2d0c5ae488 100644 --- a/projects/RabbitMQ.Client/client/framing/ConfirmSelect.cs +++ b/projects/RabbitMQ.Client/client/framing/ConfirmSelect.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ConfirmSelect : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public ConfirmSelect(bool Nowait) _nowait = Nowait; } - public override ushort ProtocolClassId => ClassConstants.Confirm; - public override ushort ProtocolMethodId => ConfirmMethodConstants.Select; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConfirmSelect; public override string ProtocolMethodName => "confirm.select"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConfirmSelectOk.cs b/projects/RabbitMQ.Client/client/framing/ConfirmSelectOk.cs index 52b058d676..ac87a1abad 100644 --- a/projects/RabbitMQ.Client/client/framing/ConfirmSelectOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ConfirmSelectOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ConfirmSelectOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public ConfirmSelectOk() { } - public override ushort ProtocolClassId => ClassConstants.Confirm; - public override ushort ProtocolMethodId => ConfirmMethodConstants.SelectOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConfirmSelectOk; public override string ProtocolMethodName => "confirm.select-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionBlocked.cs b/projects/RabbitMQ.Client/client/framing/ConnectionBlocked.cs index 2517eced59..962146be40 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionBlocked.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionBlocked.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -46,8 +47,7 @@ public ConnectionBlocked(string Reason) _reason = Reason; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.Blocked; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionBlocked; public override string ProtocolMethodName => "connection.blocked"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionClose.cs b/projects/RabbitMQ.Client/client/framing/ConnectionClose.cs index de431d5b82..32c390c9a3 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionClose.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionClose.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -52,8 +53,7 @@ public ConnectionClose(ushort ReplyCode, string ReplyText, ushort ClassId, ushor _methodId = MethodId; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.Close; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionClose; public override string ProtocolMethodName => "connection.close"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionCloseOk.cs b/projects/RabbitMQ.Client/client/framing/ConnectionCloseOk.cs index 617761e07c..338454a24b 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionCloseOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionCloseOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ConnectionCloseOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public ConnectionCloseOk() { } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.CloseOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionCloseOk; public override string ProtocolMethodName => "connection.close-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionOpen.cs b/projects/RabbitMQ.Client/client/framing/ConnectionOpen.cs index 0c755d71d6..7b2e296696 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionOpen.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionOpen.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -50,8 +51,7 @@ public ConnectionOpen(string VirtualHost, string Reserved1, bool Reserved2) _reserved2 = Reserved2; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.Open; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionOpen; public override string ProtocolMethodName => "connection.open"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionOpenOk.cs b/projects/RabbitMQ.Client/client/framing/ConnectionOpenOk.cs index 779a8c8254..85e756894e 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionOpenOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionOpenOk.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -46,8 +47,7 @@ public ConnectionOpenOk(string Reserved1) _reserved1 = Reserved1; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.OpenOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionOpenOk; public override string ProtocolMethodName => "connection.open-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionSecure.cs b/projects/RabbitMQ.Client/client/framing/ConnectionSecure.cs index a70edebd9f..d3e17489a7 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionSecure.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionSecure.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ConnectionSecure : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public ConnectionSecure(byte[] Challenge) _challenge = Challenge; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.Secure; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionSecure; public override string ProtocolMethodName => "connection.secure"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionSecureOk.cs b/projects/RabbitMQ.Client/client/framing/ConnectionSecureOk.cs index 21d39e4b40..4965d2e377 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionSecureOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionSecureOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ConnectionSecureOk : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public ConnectionSecureOk(byte[] Response) _response = Response; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.SecureOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionSecureOk; public override string ProtocolMethodName => "connection.secure-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionStart.cs b/projects/RabbitMQ.Client/client/framing/ConnectionStart.cs index 4b44fa9002..cc19799a21 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionStart.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionStart.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Collections.Generic; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -55,8 +56,7 @@ public ConnectionStart(byte VersionMajor, byte VersionMinor, IDictionary ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.Start; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionStart; public override string ProtocolMethodName => "connection.start"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionStartOk.cs b/projects/RabbitMQ.Client/client/framing/ConnectionStartOk.cs index 7e7729217d..2fdd051ecd 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionStartOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionStartOk.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -54,8 +55,7 @@ public ConnectionStartOk(IDictionary ClientProperties, string Me _locale = Locale; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.StartOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionStartOk; public override string ProtocolMethodName => "connection.start-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionTune.cs b/projects/RabbitMQ.Client/client/framing/ConnectionTune.cs index c13643360e..2bf9e19579 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionTune.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionTune.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ConnectionTune : Client.Impl.MethodBase @@ -48,8 +50,7 @@ public ConnectionTune(ushort ChannelMax, uint FrameMax, ushort Heartbeat) _heartbeat = Heartbeat; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.Tune; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionTune; public override string ProtocolMethodName => "connection.tune"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionTuneOk.cs b/projects/RabbitMQ.Client/client/framing/ConnectionTuneOk.cs index c8ecff0325..4afc59ba2a 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionTuneOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionTuneOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ConnectionTuneOk : Client.Impl.MethodBase @@ -48,8 +50,7 @@ public ConnectionTuneOk(ushort ChannelMax, uint FrameMax, ushort Heartbeat) _heartbeat = Heartbeat; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.TuneOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionTuneOk; public override string ProtocolMethodName => "connection.tune-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionUnblocked.cs b/projects/RabbitMQ.Client/client/framing/ConnectionUnblocked.cs index b27ec566bf..0c4555b624 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionUnblocked.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionUnblocked.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ConnectionUnblocked : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public ConnectionUnblocked() { } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.Unblocked; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionUnblocked; public override string ProtocolMethodName => "connection.unblocked"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionUpdateSecret.cs b/projects/RabbitMQ.Client/client/framing/ConnectionUpdateSecret.cs index 0982a592ee..d008c848ed 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionUpdateSecret.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionUpdateSecret.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -48,8 +49,7 @@ public ConnectionUpdateSecret(byte[] NewSecret, string Reason) _reason = Reason; } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.UpdateSecret; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionUpdateSecret; public override string ProtocolMethodName => "connection.update-secret"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ConnectionUpdateSecretOk.cs b/projects/RabbitMQ.Client/client/framing/ConnectionUpdateSecretOk.cs index 37648c9103..9bac494a01 100644 --- a/projects/RabbitMQ.Client/client/framing/ConnectionUpdateSecretOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ConnectionUpdateSecretOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ConnectionUpdateSecretOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public ConnectionUpdateSecretOk() { } - public override ushort ProtocolClassId => ClassConstants.Connection; - public override ushort ProtocolMethodId => ConnectionMethodConstants.UpdateSecretOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ConnectionUpdateSecretOk; public override string ProtocolMethodName => "connection.update-secret-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ExchangeBind.cs b/projects/RabbitMQ.Client/client/framing/ExchangeBind.cs index 6a2b0eca2e..4e79f91844 100644 --- a/projects/RabbitMQ.Client/client/framing/ExchangeBind.cs +++ b/projects/RabbitMQ.Client/client/framing/ExchangeBind.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -58,8 +59,7 @@ public ExchangeBind(ushort Reserved1, string Destination, string Source, string _arguments = Arguments; } - public override ushort ProtocolClassId => ClassConstants.Exchange; - public override ushort ProtocolMethodId => ExchangeMethodConstants.Bind; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ExchangeBind; public override string ProtocolMethodName => "exchange.bind"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ExchangeBindOk.cs b/projects/RabbitMQ.Client/client/framing/ExchangeBindOk.cs index d8aafba09f..565a5c4744 100644 --- a/projects/RabbitMQ.Client/client/framing/ExchangeBindOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ExchangeBindOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ExchangeBindOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public ExchangeBindOk() { } - public override ushort ProtocolClassId => ClassConstants.Exchange; - public override ushort ProtocolMethodId => ExchangeMethodConstants.BindOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ExchangeBindOk; public override string ProtocolMethodName => "exchange.bind-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ExchangeDeclare.cs b/projects/RabbitMQ.Client/client/framing/ExchangeDeclare.cs index d3ecb42fd9..fe7707f53d 100644 --- a/projects/RabbitMQ.Client/client/framing/ExchangeDeclare.cs +++ b/projects/RabbitMQ.Client/client/framing/ExchangeDeclare.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -64,8 +65,7 @@ public ExchangeDeclare(ushort Reserved1, string Exchange, string Type, bool Pass _arguments = Arguments; } - public override ushort ProtocolClassId => ClassConstants.Exchange; - public override ushort ProtocolMethodId => ExchangeMethodConstants.Declare; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ExchangeDeclare; public override string ProtocolMethodName => "exchange.declare"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ExchangeDeclareOk.cs b/projects/RabbitMQ.Client/client/framing/ExchangeDeclareOk.cs index ba18411765..880e87a92b 100644 --- a/projects/RabbitMQ.Client/client/framing/ExchangeDeclareOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ExchangeDeclareOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ExchangeDeclareOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public ExchangeDeclareOk() { } - public override ushort ProtocolClassId => ClassConstants.Exchange; - public override ushort ProtocolMethodId => ExchangeMethodConstants.DeclareOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ExchangeDeclareOk; public override string ProtocolMethodName => "exchange.declare-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ExchangeDelete.cs b/projects/RabbitMQ.Client/client/framing/ExchangeDelete.cs index 78bb7aab33..c3a469f385 100644 --- a/projects/RabbitMQ.Client/client/framing/ExchangeDelete.cs +++ b/projects/RabbitMQ.Client/client/framing/ExchangeDelete.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -52,8 +53,7 @@ public ExchangeDelete(ushort Reserved1, string Exchange, bool IfUnused, bool Now _nowait = Nowait; } - public override ushort ProtocolClassId => ClassConstants.Exchange; - public override ushort ProtocolMethodId => ExchangeMethodConstants.Delete; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ExchangeDelete; public override string ProtocolMethodName => "exchange.delete"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ExchangeDeleteOk.cs b/projects/RabbitMQ.Client/client/framing/ExchangeDeleteOk.cs index ba97fffd6d..0a8d3d8845 100644 --- a/projects/RabbitMQ.Client/client/framing/ExchangeDeleteOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ExchangeDeleteOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ExchangeDeleteOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public ExchangeDeleteOk() { } - public override ushort ProtocolClassId => ClassConstants.Exchange; - public override ushort ProtocolMethodId => ExchangeMethodConstants.DeleteOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ExchangeDeleteOk; public override string ProtocolMethodName => "exchange.delete-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ExchangeUnbind.cs b/projects/RabbitMQ.Client/client/framing/ExchangeUnbind.cs index f167389cf0..d19b573035 100644 --- a/projects/RabbitMQ.Client/client/framing/ExchangeUnbind.cs +++ b/projects/RabbitMQ.Client/client/framing/ExchangeUnbind.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -58,8 +59,7 @@ public ExchangeUnbind(ushort Reserved1, string Destination, string Source, strin _arguments = Arguments; } - public override ushort ProtocolClassId => ClassConstants.Exchange; - public override ushort ProtocolMethodId => ExchangeMethodConstants.Unbind; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ExchangeUnbind; public override string ProtocolMethodName => "exchange.unbind"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/ExchangeUnbindOk.cs b/projects/RabbitMQ.Client/client/framing/ExchangeUnbindOk.cs index 5536d93aa5..513c28604b 100644 --- a/projects/RabbitMQ.Client/client/framing/ExchangeUnbindOk.cs +++ b/projects/RabbitMQ.Client/client/framing/ExchangeUnbindOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class ExchangeUnbindOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public ExchangeUnbindOk() { } - public override ushort ProtocolClassId => ClassConstants.Exchange; - public override ushort ProtocolMethodId => ExchangeMethodConstants.UnbindOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.ExchangeUnbindOk; public override string ProtocolMethodName => "exchange.unbind-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/Model.cs b/projects/RabbitMQ.Client/client/framing/Model.cs index 1230ffb334..10b7b3180d 100644 --- a/projects/RabbitMQ.Client/client/framing/Model.cs +++ b/projects/RabbitMQ.Client/client/framing/Model.cs @@ -31,6 +31,7 @@ using System; using System.Collections.Generic; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -294,125 +295,125 @@ public override void TxSelect() public override bool DispatchAsynchronous(in IncomingCommand cmd) { - switch ((cmd.Method.ProtocolClassId << 16) | cmd.Method.ProtocolMethodId) + switch (cmd.Method.ProtocolCommandId) { - case (ClassConstants.Basic << 16) | BasicMethodConstants.Deliver: + case ProtocolCommandId.BasicDeliver: { var __impl = (BasicDeliver)cmd.Method; HandleBasicDeliver(__impl._consumerTag, __impl._deliveryTag, __impl._redelivered, __impl._exchange, __impl._routingKey, (IBasicProperties) cmd.Header, cmd.Body, cmd.TakeoverPayload()); return true; } - case (ClassConstants.Basic << 16) | BasicMethodConstants.Ack: + case ProtocolCommandId.BasicAck: { var __impl = (BasicAck)cmd.Method; HandleBasicAck(__impl._deliveryTag, __impl._multiple); return true; } - case (ClassConstants.Basic << 16) | BasicMethodConstants.Cancel: + case ProtocolCommandId.BasicCancel: { var __impl = (BasicCancel)cmd.Method; HandleBasicCancel(__impl._consumerTag, __impl._nowait); return true; } - case (ClassConstants.Basic << 16) | BasicMethodConstants.CancelOk: + case ProtocolCommandId.BasicCancelOk: { var __impl = (BasicCancelOk)cmd.Method; HandleBasicCancelOk(__impl._consumerTag); return true; } - case (ClassConstants.Basic << 16) | BasicMethodConstants.ConsumeOk: + case ProtocolCommandId.BasicConsumeOk: { var __impl = (BasicConsumeOk)cmd.Method; HandleBasicConsumeOk(__impl._consumerTag); return true; } - case (ClassConstants.Basic << 16) | BasicMethodConstants.GetEmpty: + case ProtocolCommandId.BasicGetEmpty: { HandleBasicGetEmpty(); return true; } - case (ClassConstants.Basic << 16) | BasicMethodConstants.GetOk: + case ProtocolCommandId.BasicGetOk: { var __impl = (BasicGetOk)cmd.Method; HandleBasicGetOk(__impl._deliveryTag, __impl._redelivered, __impl._exchange, __impl._routingKey, __impl._messageCount, (IBasicProperties) cmd.Header, cmd.Body, cmd.TakeoverPayload()); return true; } - case (ClassConstants.Basic << 16) | BasicMethodConstants.Nack: + case ProtocolCommandId.BasicNack: { var __impl = (BasicNack)cmd.Method; HandleBasicNack(__impl._deliveryTag, __impl._multiple, __impl._requeue); return true; } - case (ClassConstants.Basic << 16) | BasicMethodConstants.RecoverOk: + case ProtocolCommandId.BasicRecoverOk: { HandleBasicRecoverOk(); return true; } - case (ClassConstants.Basic << 16) | BasicMethodConstants.Return: + case ProtocolCommandId.BasicReturn: { var __impl = (BasicReturn)cmd.Method; HandleBasicReturn(__impl._replyCode, __impl._replyText, __impl._exchange, __impl._routingKey, (IBasicProperties) cmd.Header, cmd.Body, cmd.TakeoverPayload()); return true; } - case (ClassConstants.Channel << 16) | ChannelMethodConstants.Close: + case ProtocolCommandId.ChannelClose: { var __impl = (ChannelClose)cmd.Method; HandleChannelClose(__impl._replyCode, __impl._replyText, __impl._classId, __impl._methodId); return true; } - case (ClassConstants.Channel << 16) | ChannelMethodConstants.CloseOk: + case ProtocolCommandId.ChannelCloseOk: { HandleChannelCloseOk(); return true; } - case (ClassConstants.Channel << 16) | ChannelMethodConstants.Flow: + case ProtocolCommandId.ChannelFlow: { var __impl = (ChannelFlow)cmd.Method; HandleChannelFlow(__impl._active); return true; } - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Blocked: + case ProtocolCommandId.ConnectionBlocked: { var __impl = (ConnectionBlocked)cmd.Method; HandleConnectionBlocked(__impl._reason); return true; } - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Close: + case ProtocolCommandId.ConnectionClose: { var __impl = (ConnectionClose)cmd.Method; HandleConnectionClose(__impl._replyCode, __impl._replyText, __impl._classId, __impl._methodId); return true; } - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.OpenOk: + case ProtocolCommandId.ConnectionOpenOk: { var __impl = (ConnectionOpenOk)cmd.Method; HandleConnectionOpenOk(__impl._reserved1); return true; } - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Secure: + case ProtocolCommandId.ConnectionSecure: { var __impl = (ConnectionSecure)cmd.Method; HandleConnectionSecure(__impl._challenge); return true; } - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Start: + case ProtocolCommandId.ConnectionStart: { var __impl = (ConnectionStart)cmd.Method; HandleConnectionStart(__impl._versionMajor, __impl._versionMinor, __impl._serverProperties, __impl._mechanisms, __impl._locales); return true; } - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Tune: + case ProtocolCommandId.ConnectionTune: { var __impl = (ConnectionTune)cmd.Method; HandleConnectionTune(__impl._channelMax, __impl._frameMax, __impl._heartbeat); return true; } - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Unblocked: + case ProtocolCommandId.ConnectionUnblocked: { HandleConnectionUnblocked(); return true; } - case (ClassConstants.Queue << 16) | QueueMethodConstants.DeclareOk: + case ProtocolCommandId.QueueDeclareOk: { var __impl = (QueueDeclareOk)cmd.Method; HandleQueueDeclareOk(__impl._queue, __impl._messageCount, __impl._consumerCount); diff --git a/projects/RabbitMQ.Client/client/framing/Protocol.cs b/projects/RabbitMQ.Client/client/framing/Protocol.cs index bc500a41ce..f9304b6158 100644 --- a/projects/RabbitMQ.Client/client/framing/Protocol.cs +++ b/projects/RabbitMQ.Client/client/framing/Protocol.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Framing.Impl; namespace RabbitMQ.Client.Framing @@ -53,88 +54,84 @@ internal sealed class Protocol : ProtocolBase internal override Client.Impl.MethodBase DecodeMethodFrom(ReadOnlySpan span) { - ushort classId = Util.NetworkOrderDeserializer.ReadUInt16(span); - ushort methodId = Util.NetworkOrderDeserializer.ReadUInt16(span.Slice(2)); - Client.Impl.MethodBase result = DecodeMethodFrom(classId, methodId); - if(result != null) - { - Client.Impl.MethodArgumentReader reader = new Client.Impl.MethodArgumentReader(span.Slice(4)); - result.ReadArgumentsFrom(ref reader); - return result; - } - - throw new Exceptions.UnknownClassOrMethodException(classId, methodId); + var commandId = (ProtocolCommandId)Util.NetworkOrderDeserializer.ReadUInt32(span); + Client.Impl.MethodBase result = DecodeMethodFrom(commandId); + Client.Impl.MethodArgumentReader reader = new Client.Impl.MethodArgumentReader(span.Slice(4)); + result.ReadArgumentsFrom(ref reader); + return result; } - internal Client.Impl.MethodBase DecodeMethodFrom(ushort classId, ushort methodId) + internal Client.Impl.MethodBase DecodeMethodFrom(ProtocolCommandId commandId) { - switch ((classId << 16) | methodId) + switch (commandId) { - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Start: return new ConnectionStart(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.StartOk: return new ConnectionStartOk(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Secure: return new ConnectionSecure(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.SecureOk: return new ConnectionSecureOk(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Tune: return new ConnectionTune(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.TuneOk: return new ConnectionTuneOk(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Open: return new ConnectionOpen(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.OpenOk: return new ConnectionOpenOk(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Close: return new ConnectionClose(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.CloseOk: return new ConnectionCloseOk(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Blocked: return new ConnectionBlocked(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.Unblocked: return new ConnectionUnblocked(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.UpdateSecret: return new ConnectionUpdateSecret(); - case (ClassConstants.Connection << 16) | ConnectionMethodConstants.UpdateSecretOk: return new ConnectionUpdateSecretOk(); - case (ClassConstants.Channel << 16) | ChannelMethodConstants.Open: return new ChannelOpen(); - case (ClassConstants.Channel << 16) | ChannelMethodConstants.OpenOk: return new ChannelOpenOk(); - case (ClassConstants.Channel << 16) | ChannelMethodConstants.Flow: return new ChannelFlow(); - case (ClassConstants.Channel << 16) | ChannelMethodConstants.FlowOk: return new ChannelFlowOk(); - case (ClassConstants.Channel << 16) | ChannelMethodConstants.Close: return new ChannelClose(); - case (ClassConstants.Channel << 16) | ChannelMethodConstants.CloseOk: return new ChannelCloseOk(); - case (ClassConstants.Exchange << 16) | ExchangeMethodConstants.Declare: return new ExchangeDeclare(); - case (ClassConstants.Exchange << 16) | ExchangeMethodConstants.DeclareOk: return new ExchangeDeclareOk(); - case (ClassConstants.Exchange << 16) | ExchangeMethodConstants.Delete: return new ExchangeDelete(); - case (ClassConstants.Exchange << 16) | ExchangeMethodConstants.DeleteOk: return new ExchangeDeleteOk(); - case (ClassConstants.Exchange << 16) | ExchangeMethodConstants.Bind: return new ExchangeBind(); - case (ClassConstants.Exchange << 16) | ExchangeMethodConstants.BindOk: return new ExchangeBindOk(); - case (ClassConstants.Exchange << 16) | ExchangeMethodConstants.Unbind: return new ExchangeUnbind(); - case (ClassConstants.Exchange << 16) | ExchangeMethodConstants.UnbindOk: return new ExchangeUnbindOk(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.Declare: return new QueueDeclare(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.DeclareOk: return new Impl.QueueDeclareOk(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.Bind: return new QueueBind(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.BindOk: return new QueueBindOk(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.Unbind: return new QueueUnbind(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.UnbindOk: return new QueueUnbindOk(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.Purge: return new QueuePurge(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.PurgeOk: return new QueuePurgeOk(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.Delete: return new QueueDelete(); - case (ClassConstants.Queue << 16) | QueueMethodConstants.DeleteOk: return new QueueDeleteOk(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Qos: return new BasicQos(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.QosOk: return new BasicQosOk(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Consume: return new BasicConsume(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.ConsumeOk: return new BasicConsumeOk(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Cancel: return new BasicCancel(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.CancelOk: return new BasicCancelOk(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Publish: return new BasicPublish(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Return: return new BasicReturn(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Deliver: return new BasicDeliver(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Get: return new BasicGet(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.GetOk: return new BasicGetOk(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.GetEmpty: return new BasicGetEmpty(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Ack: return new BasicAck(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Reject: return new BasicReject(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.RecoverAsync: return new BasicRecoverAsync(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Recover: return new BasicRecover(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.RecoverOk: return new BasicRecoverOk(); - case (ClassConstants.Basic << 16) | BasicMethodConstants.Nack: return new BasicNack(); - case (ClassConstants.Tx << 16) | TxMethodConstants.Select: return new TxSelect(); - case (ClassConstants.Tx << 16) | TxMethodConstants.SelectOk: return new TxSelectOk(); - case (ClassConstants.Tx << 16) | TxMethodConstants.Commit: return new TxCommit(); - case (ClassConstants.Tx << 16) | TxMethodConstants.CommitOk: return new TxCommitOk(); - case (ClassConstants.Tx << 16) | TxMethodConstants.Rollback: return new TxRollback(); - case (ClassConstants.Tx << 16) | TxMethodConstants.RollbackOk: return new TxRollbackOk(); - case (ClassConstants.Confirm << 16) | ConfirmMethodConstants.Select: return new ConfirmSelect(); - case (ClassConstants.Confirm << 16) | ConfirmMethodConstants.SelectOk: return new ConfirmSelectOk(); - default: return null; + case ProtocolCommandId.ConnectionStart: return new ConnectionStart(); + case ProtocolCommandId.ConnectionStartOk: return new ConnectionStartOk(); + case ProtocolCommandId.ConnectionSecure: return new ConnectionSecure(); + case ProtocolCommandId.ConnectionSecureOk: return new ConnectionSecureOk(); + case ProtocolCommandId.ConnectionTune: return new ConnectionTune(); + case ProtocolCommandId.ConnectionTuneOk: return new ConnectionTuneOk(); + case ProtocolCommandId.ConnectionOpen: return new ConnectionOpen(); + case ProtocolCommandId.ConnectionOpenOk: return new ConnectionOpenOk(); + case ProtocolCommandId.ConnectionClose: return new ConnectionClose(); + case ProtocolCommandId.ConnectionCloseOk: return new ConnectionCloseOk(); + case ProtocolCommandId.ConnectionBlocked: return new ConnectionBlocked(); + case ProtocolCommandId.ConnectionUnblocked: return new ConnectionUnblocked(); + case ProtocolCommandId.ConnectionUpdateSecret: return new ConnectionUpdateSecret(); + case ProtocolCommandId.ConnectionUpdateSecretOk: return new ConnectionUpdateSecretOk(); + case ProtocolCommandId.ChannelOpen: return new ChannelOpen(); + case ProtocolCommandId.ChannelOpenOk: return new ChannelOpenOk(); + case ProtocolCommandId.ChannelFlow: return new ChannelFlow(); + case ProtocolCommandId.ChannelFlowOk: return new ChannelFlowOk(); + case ProtocolCommandId.ChannelClose: return new ChannelClose(); + case ProtocolCommandId.ChannelCloseOk: return new ChannelCloseOk(); + case ProtocolCommandId.ExchangeDeclare: return new ExchangeDeclare(); + case ProtocolCommandId.ExchangeDeclareOk: return new ExchangeDeclareOk(); + case ProtocolCommandId.ExchangeDelete: return new ExchangeDelete(); + case ProtocolCommandId.ExchangeDeleteOk: return new ExchangeDeleteOk(); + case ProtocolCommandId.ExchangeBind: return new ExchangeBind(); + case ProtocolCommandId.ExchangeBindOk: return new ExchangeBindOk(); + case ProtocolCommandId.ExchangeUnbind: return new ExchangeUnbind(); + case ProtocolCommandId.ExchangeUnbindOk: return new ExchangeUnbindOk(); + case ProtocolCommandId.QueueDeclare: return new QueueDeclare(); + case ProtocolCommandId.QueueDeclareOk: return new Impl.QueueDeclareOk(); + case ProtocolCommandId.QueueBind: return new QueueBind(); + case ProtocolCommandId.QueueBindOk: return new QueueBindOk(); + case ProtocolCommandId.QueueUnbind: return new QueueUnbind(); + case ProtocolCommandId.QueueUnbindOk: return new QueueUnbindOk(); + case ProtocolCommandId.QueuePurge: return new QueuePurge(); + case ProtocolCommandId.QueuePurgeOk: return new QueuePurgeOk(); + case ProtocolCommandId.QueueDelete: return new QueueDelete(); + case ProtocolCommandId.QueueDeleteOk: return new QueueDeleteOk(); + case ProtocolCommandId.BasicQos: return new BasicQos(); + case ProtocolCommandId.BasicQosOk: return new BasicQosOk(); + case ProtocolCommandId.BasicConsume: return new BasicConsume(); + case ProtocolCommandId.BasicConsumeOk: return new BasicConsumeOk(); + case ProtocolCommandId.BasicCancel: return new BasicCancel(); + case ProtocolCommandId.BasicCancelOk: return new BasicCancelOk(); + case ProtocolCommandId.BasicPublish: return new BasicPublish(); + case ProtocolCommandId.BasicReturn: return new BasicReturn(); + case ProtocolCommandId.BasicDeliver: return new BasicDeliver(); + case ProtocolCommandId.BasicGet: return new BasicGet(); + case ProtocolCommandId.BasicGetOk: return new BasicGetOk(); + case ProtocolCommandId.BasicGetEmpty: return new BasicGetEmpty(); + case ProtocolCommandId.BasicAck: return new BasicAck(); + case ProtocolCommandId.BasicReject: return new BasicReject(); + case ProtocolCommandId.BasicRecoverAsync: return new BasicRecoverAsync(); + case ProtocolCommandId.BasicRecover: return new BasicRecover(); + case ProtocolCommandId.BasicRecoverOk: return new BasicRecoverOk(); + case ProtocolCommandId.BasicNack: return new BasicNack(); + case ProtocolCommandId.TxSelect: return new TxSelect(); + case ProtocolCommandId.TxSelectOk: return new TxSelectOk(); + case ProtocolCommandId.TxCommit: return new TxCommit(); + case ProtocolCommandId.TxCommitOk: return new TxCommitOk(); + case ProtocolCommandId.TxRollback: return new TxRollback(); + case ProtocolCommandId.TxRollbackOk: return new TxRollbackOk(); + case ProtocolCommandId.ConfirmSelect: return new ConfirmSelect(); + case ProtocolCommandId.ConfirmSelectOk: return new ConfirmSelectOk(); + default: + //TODO Check if valid + throw new Exceptions.UnknownClassOrMethodException((ushort)((uint)commandId >> 16), (ushort)((uint)commandId & 0xFFFF)); } } diff --git a/projects/RabbitMQ.Client/client/framing/ProtocolCommandId.cs b/projects/RabbitMQ.Client/client/framing/ProtocolCommandId.cs new file mode 100644 index 0000000000..aa08da45f8 --- /dev/null +++ b/projects/RabbitMQ.Client/client/framing/ProtocolCommandId.cs @@ -0,0 +1,72 @@ +using RabbitMQ.Client.Framing.Impl; + +namespace RabbitMQ.Client.client.framing +{ + internal enum ProtocolCommandId : uint + { + BasicQos = (ClassConstants.Basic << 16) | BasicMethodConstants.Qos, + BasicQosOk = (ClassConstants.Basic << 16) | BasicMethodConstants.QosOk, + BasicConsume = (ClassConstants.Basic << 16) | BasicMethodConstants.Consume, + BasicConsumeOk = (ClassConstants.Basic << 16) | BasicMethodConstants.ConsumeOk, + BasicCancel = (ClassConstants.Basic << 16) | BasicMethodConstants.Cancel, + BasicCancelOk = (ClassConstants.Basic << 16) | BasicMethodConstants.CancelOk, + BasicPublish = (ClassConstants.Basic << 16) | BasicMethodConstants.Publish, + BasicReturn = (ClassConstants.Basic << 16) | BasicMethodConstants.Return, + BasicDeliver = (ClassConstants.Basic << 16) | BasicMethodConstants.Deliver, + BasicGet = (ClassConstants.Basic << 16) | BasicMethodConstants.Get, + BasicGetOk = (ClassConstants.Basic << 16) | BasicMethodConstants.GetOk, + BasicGetEmpty = (ClassConstants.Basic << 16) | BasicMethodConstants.GetEmpty, + BasicAck = (ClassConstants.Basic << 16) | BasicMethodConstants.Ack, + BasicReject = (ClassConstants.Basic << 16) | BasicMethodConstants.Reject, + BasicRecoverAsync = (ClassConstants.Basic << 16) | BasicMethodConstants.RecoverAsync, + BasicRecover = (ClassConstants.Basic << 16) | BasicMethodConstants.Recover, + BasicRecoverOk = (ClassConstants.Basic << 16) | BasicMethodConstants.RecoverOk, + BasicNack = (ClassConstants.Basic << 16) | BasicMethodConstants.Nack, + ChannelOpen = (ClassConstants.Channel << 16) | ChannelMethodConstants.Open, + ChannelOpenOk = (ClassConstants.Channel << 16) | ChannelMethodConstants.OpenOk, + ChannelFlow = (ClassConstants.Channel << 16) | ChannelMethodConstants.Flow, + ChannelFlowOk = (ClassConstants.Channel << 16) | ChannelMethodConstants.FlowOk, + ChannelClose = (ClassConstants.Channel << 16) | ChannelMethodConstants.Close, + ChannelCloseOk = (ClassConstants.Channel << 16) | ChannelMethodConstants.CloseOk, + ConfirmSelect = (ClassConstants.Confirm << 16) | ConfirmMethodConstants.Select, + ConfirmSelectOk = (ClassConstants.Confirm << 16) | ConfirmMethodConstants.SelectOk, + ConnectionStart = (ClassConstants.Connection << 16) | ConnectionMethodConstants.Start, + ConnectionStartOk = (ClassConstants.Connection << 16) | ConnectionMethodConstants.StartOk, + ConnectionSecure = (ClassConstants.Connection << 16) | ConnectionMethodConstants.Secure, + ConnectionSecureOk = (ClassConstants.Connection << 16) | ConnectionMethodConstants.SecureOk, + ConnectionTune = (ClassConstants.Connection << 16) | ConnectionMethodConstants.Tune, + ConnectionTuneOk = (ClassConstants.Connection << 16) | ConnectionMethodConstants.TuneOk, + ConnectionOpen = (ClassConstants.Connection << 16) | ConnectionMethodConstants.Open, + ConnectionOpenOk = (ClassConstants.Connection << 16) | ConnectionMethodConstants.OpenOk, + ConnectionClose = (ClassConstants.Connection << 16) | ConnectionMethodConstants.Close, + ConnectionCloseOk = (ClassConstants.Connection << 16) | ConnectionMethodConstants.CloseOk, + ConnectionBlocked = (ClassConstants.Connection << 16) | ConnectionMethodConstants.Blocked, + ConnectionUnblocked = (ClassConstants.Connection << 16) | ConnectionMethodConstants.Unblocked, + ConnectionUpdateSecret = (ClassConstants.Connection << 16) | ConnectionMethodConstants.UpdateSecret, + ConnectionUpdateSecretOk = (ClassConstants.Connection << 16) | ConnectionMethodConstants.UpdateSecretOk, + ExchangeDeclare = (ClassConstants.Exchange << 16) | ExchangeMethodConstants.Declare, + ExchangeDeclareOk = (ClassConstants.Exchange << 16) | ExchangeMethodConstants.DeclareOk, + ExchangeDelete = (ClassConstants.Exchange << 16) | ExchangeMethodConstants.Delete , + ExchangeDeleteOk = (ClassConstants.Exchange << 16) | ExchangeMethodConstants.DeleteOk, + ExchangeBind = (ClassConstants.Exchange << 16) | ExchangeMethodConstants.Bind, + ExchangeBindOk = (ClassConstants.Exchange << 16) | ExchangeMethodConstants.BindOk , + ExchangeUnbind = (ClassConstants.Exchange << 16) | ExchangeMethodConstants.Unbind , + ExchangeUnbindOk = (ClassConstants.Exchange << 16) | ExchangeMethodConstants.UnbindOk, + QueueDeclare = (ClassConstants.Queue << 16) | QueueMethodConstants.Declare, + QueueDeclareOk = (ClassConstants.Queue << 16) | QueueMethodConstants.DeclareOk, + QueueBind = (ClassConstants.Queue << 16) | QueueMethodConstants.Bind, + QueueBindOk = (ClassConstants.Queue << 16) | QueueMethodConstants.BindOk, + QueueUnbind = (ClassConstants.Queue << 16) | QueueMethodConstants.Unbind, + QueueUnbindOk = (ClassConstants.Queue << 16) | QueueMethodConstants.UnbindOk, + QueuePurge = (ClassConstants.Queue << 16) | QueueMethodConstants.Purge, + QueuePurgeOk = (ClassConstants.Queue << 16) | QueueMethodConstants.PurgeOk, + QueueDelete = (ClassConstants.Queue << 16) | QueueMethodConstants.Delete, + QueueDeleteOk = (ClassConstants.Queue << 16) | QueueMethodConstants.DeleteOk, + TxSelect = (ClassConstants.Tx << 16) | TxMethodConstants.Select, + TxSelectOk = (ClassConstants.Tx << 16) | TxMethodConstants.SelectOk, + TxCommit = (ClassConstants.Tx << 16) | TxMethodConstants.Commit, + TxCommitOk = (ClassConstants.Tx << 16) | TxMethodConstants.CommitOk, + TxRollback = (ClassConstants.Tx << 16) | TxMethodConstants.Rollback, + TxRollbackOk = (ClassConstants.Tx << 16) | TxMethodConstants.RollbackOk + } +} diff --git a/projects/RabbitMQ.Client/client/framing/QueueBind.cs b/projects/RabbitMQ.Client/client/framing/QueueBind.cs index 4fb7164341..c7ae275a38 100644 --- a/projects/RabbitMQ.Client/client/framing/QueueBind.cs +++ b/projects/RabbitMQ.Client/client/framing/QueueBind.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -58,8 +59,7 @@ public QueueBind(ushort Reserved1, string Queue, string Exchange, string Routing _arguments = Arguments; } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.Bind; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueueBind; public override string ProtocolMethodName => "queue.bind"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/QueueBindOk.cs b/projects/RabbitMQ.Client/client/framing/QueueBindOk.cs index a468398af3..74a2fbbb53 100644 --- a/projects/RabbitMQ.Client/client/framing/QueueBindOk.cs +++ b/projects/RabbitMQ.Client/client/framing/QueueBindOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class QueueBindOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public QueueBindOk() { } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.BindOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueueBindOk; public override string ProtocolMethodName => "queue.bind-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/QueueDeclare.cs b/projects/RabbitMQ.Client/client/framing/QueueDeclare.cs index efa6a126ef..e0b9d44001 100644 --- a/projects/RabbitMQ.Client/client/framing/QueueDeclare.cs +++ b/projects/RabbitMQ.Client/client/framing/QueueDeclare.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -62,8 +63,7 @@ public QueueDeclare(ushort Reserved1, string Queue, bool Passive, bool Durable, _arguments = Arguments; } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.Declare; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueueDeclare; public override string ProtocolMethodName => "queue.declare"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/QueueDeclareOk.cs b/projects/RabbitMQ.Client/client/framing/QueueDeclareOk.cs index 85bc41767c..b8df61c616 100644 --- a/projects/RabbitMQ.Client/client/framing/QueueDeclareOk.cs +++ b/projects/RabbitMQ.Client/client/framing/QueueDeclareOk.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -50,8 +51,7 @@ public QueueDeclareOk(string Queue, uint MessageCount, uint ConsumerCount) _consumerCount = ConsumerCount; } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.DeclareOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueueDeclareOk; public override string ProtocolMethodName => "queue.declare-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/QueueDelete.cs b/projects/RabbitMQ.Client/client/framing/QueueDelete.cs index 64cc5e14a0..5454c492d2 100644 --- a/projects/RabbitMQ.Client/client/framing/QueueDelete.cs +++ b/projects/RabbitMQ.Client/client/framing/QueueDelete.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -54,8 +55,7 @@ public QueueDelete(ushort Reserved1, string Queue, bool IfUnused, bool IfEmpty, _nowait = Nowait; } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.Delete; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueueDelete; public override string ProtocolMethodName => "queue.delete"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/QueueDeleteOk.cs b/projects/RabbitMQ.Client/client/framing/QueueDeleteOk.cs index 81580cc5da..facffe6c55 100644 --- a/projects/RabbitMQ.Client/client/framing/QueueDeleteOk.cs +++ b/projects/RabbitMQ.Client/client/framing/QueueDeleteOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class QueueDeleteOk : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public QueueDeleteOk(uint MessageCount) _messageCount = MessageCount; } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.DeleteOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueueDeleteOk; public override string ProtocolMethodName => "queue.delete-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/QueuePurge.cs b/projects/RabbitMQ.Client/client/framing/QueuePurge.cs index a7abb17483..4c16f36660 100644 --- a/projects/RabbitMQ.Client/client/framing/QueuePurge.cs +++ b/projects/RabbitMQ.Client/client/framing/QueuePurge.cs @@ -30,6 +30,7 @@ //--------------------------------------------------------------------------- using System.Text; +using RabbitMQ.Client.client.framing; namespace RabbitMQ.Client.Framing.Impl { @@ -50,8 +51,7 @@ public QueuePurge(ushort Reserved1, string Queue, bool Nowait) _nowait = Nowait; } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.Purge; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueuePurge; public override string ProtocolMethodName => "queue.purge"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/QueuePurgeOk.cs b/projects/RabbitMQ.Client/client/framing/QueuePurgeOk.cs index 90ab57791b..1c7ae606aa 100644 --- a/projects/RabbitMQ.Client/client/framing/QueuePurgeOk.cs +++ b/projects/RabbitMQ.Client/client/framing/QueuePurgeOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class QueuePurgeOk : Client.Impl.MethodBase @@ -44,8 +46,7 @@ public QueuePurgeOk(uint MessageCount) _messageCount = MessageCount; } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.PurgeOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueuePurgeOk; public override string ProtocolMethodName => "queue.purge-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/QueueUnbind.cs b/projects/RabbitMQ.Client/client/framing/QueueUnbind.cs index 2d036d41b2..22e5bb25ca 100644 --- a/projects/RabbitMQ.Client/client/framing/QueueUnbind.cs +++ b/projects/RabbitMQ.Client/client/framing/QueueUnbind.cs @@ -31,6 +31,7 @@ using System.Collections.Generic; using System.Text; +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -56,8 +57,7 @@ public QueueUnbind(ushort Reserved1, string Queue, string Exchange, string Routi _arguments = Arguments; } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.Unbind; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueueUnbind; public override string ProtocolMethodName => "queue.unbind"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/QueueUnbindOk.cs b/projects/RabbitMQ.Client/client/framing/QueueUnbindOk.cs index 9f56bbc904..e1cfa06556 100644 --- a/projects/RabbitMQ.Client/client/framing/QueueUnbindOk.cs +++ b/projects/RabbitMQ.Client/client/framing/QueueUnbindOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class QueueUnbindOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public QueueUnbindOk() { } - public override ushort ProtocolClassId => ClassConstants.Queue; - public override ushort ProtocolMethodId => QueueMethodConstants.UnbindOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.QueueUnbindOk; public override string ProtocolMethodName => "queue.unbind-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/TxCommit.cs b/projects/RabbitMQ.Client/client/framing/TxCommit.cs index 04d0fa199e..645ebcf2c2 100644 --- a/projects/RabbitMQ.Client/client/framing/TxCommit.cs +++ b/projects/RabbitMQ.Client/client/framing/TxCommit.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class TxCommit : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public TxCommit() { } - public override ushort ProtocolClassId => ClassConstants.Tx; - public override ushort ProtocolMethodId => TxMethodConstants.Commit; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.TxCommit; public override string ProtocolMethodName => "tx.commit"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/TxCommitOk.cs b/projects/RabbitMQ.Client/client/framing/TxCommitOk.cs index 05b852515b..e70006639b 100644 --- a/projects/RabbitMQ.Client/client/framing/TxCommitOk.cs +++ b/projects/RabbitMQ.Client/client/framing/TxCommitOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class TxCommitOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public TxCommitOk() { } - public override ushort ProtocolClassId => ClassConstants.Tx; - public override ushort ProtocolMethodId => TxMethodConstants.CommitOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.TxCommitOk; public override string ProtocolMethodName => "tx.commit-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/TxRollback.cs b/projects/RabbitMQ.Client/client/framing/TxRollback.cs index cee9134e9a..e136568ece 100644 --- a/projects/RabbitMQ.Client/client/framing/TxRollback.cs +++ b/projects/RabbitMQ.Client/client/framing/TxRollback.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class TxRollback : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public TxRollback() { } - public override ushort ProtocolClassId => ClassConstants.Tx; - public override ushort ProtocolMethodId => TxMethodConstants.Rollback; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.TxRollback; public override string ProtocolMethodName => "tx.rollback"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/TxRollbackOk.cs b/projects/RabbitMQ.Client/client/framing/TxRollbackOk.cs index fc144b8bdd..21f8212ead 100644 --- a/projects/RabbitMQ.Client/client/framing/TxRollbackOk.cs +++ b/projects/RabbitMQ.Client/client/framing/TxRollbackOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class TxRollbackOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public TxRollbackOk() { } - public override ushort ProtocolClassId => ClassConstants.Tx; - public override ushort ProtocolMethodId => TxMethodConstants.RollbackOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.TxRollbackOk; public override string ProtocolMethodName => "tx.rollback-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/TxSelect.cs b/projects/RabbitMQ.Client/client/framing/TxSelect.cs index 8a194131a6..5e76884630 100644 --- a/projects/RabbitMQ.Client/client/framing/TxSelect.cs +++ b/projects/RabbitMQ.Client/client/framing/TxSelect.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class TxSelect : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public TxSelect() { } - public override ushort ProtocolClassId => ClassConstants.Tx; - public override ushort ProtocolMethodId => TxMethodConstants.Select; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.TxSelect; public override string ProtocolMethodName => "tx.select"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/framing/TxSelectOk.cs b/projects/RabbitMQ.Client/client/framing/TxSelectOk.cs index 936010025f..0b3d9fb704 100644 --- a/projects/RabbitMQ.Client/client/framing/TxSelectOk.cs +++ b/projects/RabbitMQ.Client/client/framing/TxSelectOk.cs @@ -29,6 +29,8 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Framing.Impl { internal sealed class TxSelectOk : Client.Impl.MethodBase @@ -37,8 +39,7 @@ public TxSelectOk() { } - public override ushort ProtocolClassId => ClassConstants.Tx; - public override ushort ProtocolMethodId => TxMethodConstants.SelectOk; + public override ProtocolCommandId ProtocolCommandId => ProtocolCommandId.TxSelectOk; public override string ProtocolMethodName => "tx.select-ok"; public override bool HasContent => false; diff --git a/projects/RabbitMQ.Client/client/impl/Connection.cs b/projects/RabbitMQ.Client/client/impl/Connection.cs index 0a9fb9b976..44427a5595 100644 --- a/projects/RabbitMQ.Client/client/impl/Connection.cs +++ b/projects/RabbitMQ.Client/client/impl/Connection.cs @@ -381,7 +381,7 @@ public void ClosingLoop() public OutgoingCommand ConnectionCloseWrapper(ushort reasonCode, string reasonText) { - Protocol.CreateConnectionClose(reasonCode, reasonText, out OutgoingCommand request, out _, out _); + Protocol.CreateConnectionClose(reasonCode, reasonText, out OutgoingCommand request, out _); return request; } @@ -1039,7 +1039,7 @@ private void Dispose(bool disposing) internal OutgoingCommand ChannelCloseWrapper(ushort reasonCode, string reasonText) { - Protocol.CreateChannelClose(reasonCode, reasonText, out OutgoingCommand request, out _, out _); + Protocol.CreateChannelClose(reasonCode, reasonText, out OutgoingCommand request); return request; } diff --git a/projects/RabbitMQ.Client/client/impl/Frame.cs b/projects/RabbitMQ.Client/client/impl/Frame.cs index 5cb400a6d0..5c0afec742 100644 --- a/projects/RabbitMQ.Client/client/impl/Frame.cs +++ b/projects/RabbitMQ.Client/client/impl/Frame.cs @@ -35,7 +35,6 @@ using System.Net.Sockets; using System.Runtime.CompilerServices; using System.Runtime.ExceptionServices; -using System.Runtime.InteropServices; using RabbitMQ.Client.Exceptions; using RabbitMQ.Util; @@ -68,20 +67,20 @@ private static int WriteBaseFrame(Span span, FrameType type, ushort channe internal static class Method { /* +----------+-----------+-----------+ - * | Class Id | Method Id | Arguments | + * | CommandId (combined) | Arguments | + * | Class Id | Method Id | | * +----------+-----------+-----------+ - * | 2 bytes | 2 bytes | x bytes | + * | 4 bytes (combined) | x bytes | + * | 2 bytes | 2 bytes | | * +----------+-----------+-----------+ */ public const int FrameSize = BaseFrameSize + 2 + 2; public static int WriteTo(Span span, ushort channel, MethodBase method) { const int StartClassId = StartPayload; - const int StartMethodId = StartPayload + 2; const int StartMethodArguments = StartPayload + 4; - NetworkOrderSerializer.WriteUInt16(span.Slice(StartClassId), method.ProtocolClassId); - NetworkOrderSerializer.WriteUInt16(span.Slice(StartMethodId), method.ProtocolMethodId); + NetworkOrderSerializer.WriteUInt32(span.Slice(StartClassId), (uint)method.ProtocolCommandId); var argWriter = new MethodArgumentWriter(span.Slice(StartMethodArguments)); method.WriteArgumentsTo(ref argWriter); return WriteBaseFrame(span, FrameType.FrameMethod, channel, StartMethodArguments - StartPayload + argWriter.Offset); diff --git a/projects/RabbitMQ.Client/client/impl/MainSession.cs b/projects/RabbitMQ.Client/client/impl/MainSession.cs index d50dd58f9a..f6c24de2c8 100644 --- a/projects/RabbitMQ.Client/client/impl/MainSession.cs +++ b/projects/RabbitMQ.Client/client/impl/MainSession.cs @@ -35,7 +35,7 @@ // that ever changes. using System; - +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Framing.Impl; namespace RabbitMQ.Client.Impl @@ -45,19 +45,16 @@ internal sealed class MainSession : Session { private readonly object _closingLock = new object(); - private readonly ushort _closeClassId; - private readonly ushort _closeMethodId; - private readonly ushort _closeOkClassId; - private readonly ushort _closeOkMethodId; + private readonly ProtocolCommandId _closeProtocolId; + private readonly ProtocolCommandId _closeOkProtocolId; private bool _closeServerInitiated; private bool _closing; public MainSession(Connection connection) : base(connection, 0) { - connection.Protocol.CreateConnectionClose(0, string.Empty, out OutgoingCommand request, out _closeOkClassId, out _closeOkMethodId); - _closeClassId = request.Method.ProtocolClassId; - _closeMethodId = request.Method.ProtocolMethodId; + connection.Protocol.CreateConnectionClose(0, string.Empty, out OutgoingCommand request, out _closeOkProtocolId); + _closeProtocolId = request.Method.ProtocolCommandId; } public Action Handler { get; set; } @@ -75,12 +72,12 @@ public override bool HandleFrame(in InboundFrame frame) if (!_closeServerInitiated && frame.Type == FrameType.FrameMethod) { MethodBase method = Connection.Protocol.DecodeMethodFrom(frame.Payload.Span); - if (method.ProtocolClassId == _closeClassId && method.ProtocolMethodId == _closeMethodId) + if (method.ProtocolCommandId == _closeProtocolId) { return base.HandleFrame(in frame); } - if (method.ProtocolClassId == _closeOkClassId && method.ProtocolMethodId == _closeOkMethodId) + if (method.ProtocolCommandId == _closeOkProtocolId) { // This is the reply (CloseOk) we were looking for // Call any listener attached to this session @@ -125,12 +122,8 @@ public override void Transmit(in OutgoingCommand cmd) // Allow always for sending close ok // Or if application initiated, allow also for sending close MethodBase method = cmd.Method; - if (((method.ProtocolClassId == _closeOkClassId) - && (method.ProtocolMethodId == _closeOkMethodId)) - || (!_closeServerInitiated && - (method.ProtocolClassId == _closeClassId) && - (method.ProtocolMethodId == _closeMethodId) - )) + if (method.ProtocolCommandId == _closeOkProtocolId || + (!_closeServerInitiated && method.ProtocolCommandId == _closeProtocolId)) { base.Transmit(cmd); } diff --git a/projects/RabbitMQ.Client/client/impl/MethodBase.cs b/projects/RabbitMQ.Client/client/impl/MethodBase.cs index 54336dc7ff..c1e20feb0c 100644 --- a/projects/RabbitMQ.Client/client/impl/MethodBase.cs +++ b/projects/RabbitMQ.Client/client/impl/MethodBase.cs @@ -29,21 +29,25 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; + namespace RabbitMQ.Client.Impl { - internal abstract class MethodBase : IMethod + internal abstract class MethodBase { public abstract bool HasContent { get; } + public abstract ProtocolCommandId ProtocolCommandId { get; } + /// /// Retrieves the class ID number of this method, as defined in the AMQP specification XML. /// - public abstract ushort ProtocolClassId { get; } + public ushort ProtocolClassId => (ushort)((uint)ProtocolCommandId >> 16); /// /// Retrieves the method ID number of this method, as defined in the AMQP specification XML. /// - public abstract ushort ProtocolMethodId { get; } + public ushort ProtocolMethodId => (ushort)((uint)ProtocolCommandId & 0xFFFF); /// /// Retrieves the name of this method - for debugging use. diff --git a/projects/RabbitMQ.Client/client/impl/ModelBase.cs b/projects/RabbitMQ.Client/client/impl/ModelBase.cs index 3c6eba8237..02fb5f775e 100644 --- a/projects/RabbitMQ.Client/client/impl/ModelBase.cs +++ b/projects/RabbitMQ.Client/client/impl/ModelBase.cs @@ -346,7 +346,7 @@ public T ModelRpc(MethodBase method) where T : MethodBase return result; } - throw new UnexpectedMethodException(baseResult); + throw new UnexpectedMethodException(baseResult.ProtocolClassId, baseResult.ProtocolMethodId, baseResult.ProtocolMethodName); } public void ModelSend(MethodBase method) diff --git a/projects/RabbitMQ.Client/client/impl/ProtocolBase.cs b/projects/RabbitMQ.Client/client/impl/ProtocolBase.cs index 30d93f5020..255e527d4c 100644 --- a/projects/RabbitMQ.Client/client/impl/ProtocolBase.cs +++ b/projects/RabbitMQ.Client/client/impl/ProtocolBase.cs @@ -31,7 +31,7 @@ using System; using System.Collections.Generic; - +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Impl; namespace RabbitMQ.Client.Framing.Impl @@ -72,24 +72,15 @@ public bool CanSendWhileClosed(MethodBase method) public void CreateChannelClose(ushort reasonCode, string reasonText, - out OutgoingCommand request, - out ushort replyClassId, - out ushort replyMethodId) + out OutgoingCommand request) { request = new OutgoingCommand(new Impl.ChannelClose(reasonCode, reasonText, 0, 0)); - replyClassId = ClassConstants.Channel; - replyMethodId = ChannelMethodConstants.CloseOk; } - public void CreateConnectionClose(ushort reasonCode, - string reasonText, - out OutgoingCommand request, - out ushort replyClassId, - out ushort replyMethodId) + public void CreateConnectionClose(ushort reasonCode, string reasonText, out OutgoingCommand request, out ProtocolCommandId replyProtocolCommandId) { request = new OutgoingCommand(new Impl.ConnectionClose(reasonCode, reasonText, 0, 0)); - replyClassId = ClassConstants.Connection; - replyMethodId = ConnectionMethodConstants.CloseOk; + replyProtocolCommandId = ProtocolCommandId.ConnectionCloseOk; } internal abstract ContentHeaderBase DecodeContentHeaderFrom(ushort classId); diff --git a/projects/RabbitMQ.Client/client/impl/QuiescingSession.cs b/projects/RabbitMQ.Client/client/impl/QuiescingSession.cs index 61b121aa7c..81baab7a6e 100644 --- a/projects/RabbitMQ.Client/client/impl/QuiescingSession.cs +++ b/projects/RabbitMQ.Client/client/impl/QuiescingSession.cs @@ -29,6 +29,7 @@ // Copyright (c) 2007-2020 VMware, Inc. All rights reserved. //--------------------------------------------------------------------------- +using RabbitMQ.Client.client.framing; using RabbitMQ.Client.Framing.Impl; namespace RabbitMQ.Client.Impl @@ -49,18 +50,19 @@ public override bool HandleFrame(in InboundFrame frame) if (frame.Type == FrameType.FrameMethod) { MethodBase method = Connection.Protocol.DecodeMethodFrom(frame.Payload.Span); - if (method.ProtocolClassId == ClassConstants.Channel && method.ProtocolMethodId == ChannelMethodConstants.CloseOk) + switch (method.ProtocolCommandId) { - // This is the reply we were looking for. Release - // the channel with the reason we were passed in - // our constructor. - Close(_reason); - } - else if (method.ProtocolClassId == ClassConstants.Channel && method.ProtocolMethodId == ChannelMethodConstants.Close) - { - // We're already shutting down the channel, so - // just send back an ok. - Transmit(new OutgoingCommand(new ConnectionCloseOk())); + case ProtocolCommandId.ChannelCloseOk: + // This is the reply we were looking for. Release + // the channel with the reason we were passed in + // our constructor. + Close(_reason); + break; + case ProtocolCommandId.ChannelClose: + // We're already shutting down the channel, so + // just send back an ok. + Transmit(new OutgoingCommand(new ConnectionCloseOk())); + break; } } diff --git a/projects/Unit/APIApproval.Approve.verified.txt b/projects/Unit/APIApproval.Approve.verified.txt index d8b91d395a..6a3a66ea35 100644 --- a/projects/Unit/APIApproval.Approve.verified.txt +++ b/projects/Unit/APIApproval.Approve.verified.txt @@ -363,12 +363,6 @@ namespace RabbitMQ.Client { System.Collections.Generic.IEnumerable All(); } - public interface IMethod - { - ushort ProtocolClassId { get; } - ushort ProtocolMethodId { get; } - string ProtocolMethodName { get; } - } public interface IModel : System.IDisposable { int ChannelNumber { get; } @@ -795,8 +789,10 @@ namespace RabbitMQ.Client.Exceptions } public class UnexpectedMethodException : RabbitMQ.Client.Exceptions.ProtocolViolationException { - public UnexpectedMethodException(RabbitMQ.Client.IMethod method) { } - public RabbitMQ.Client.IMethod Method { get; } + public UnexpectedMethodException(ushort classId, ushort methodId, string methodName) { } + public ushort ProtocolClassId { get; } + public ushort ProtocolMethodId { get; } + public string ProtocolMethodName { get; } } public class UnknownClassOrMethodException : RabbitMQ.Client.Exceptions.HardProtocolException {