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
{