Skip to content

Commit 580e2f6

Browse files
author
Emile Joubert
committed
Protocol-specific connection opening using subclass instead of condition
1 parent e02e6e5 commit 580e2f6

File tree

2 files changed

+27
-20
lines changed

2 files changed

+27
-20
lines changed

projects/client/RabbitMQ.Client/src/client/impl/ConnectionBase.cs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -971,15 +971,18 @@ private static uint NegotiatedMaxValue(uint clientValue, uint serverValue)
971971
Math.Min(clientValue, serverValue);
972972
}
973973

974-
public void Open(bool insist)
974+
/// <summary>
975+
/// Connection opening, common to all supported protocol versions
976+
/// </summary>
977+
protected void OpenCommon()
975978
{
976979
BlockingCell connectionStartCell = new BlockingCell();
977980
m_model0.m_connectionStartCell = connectionStartCell;
978981
m_frameHandler.Timeout = HandshakeTimeout;
979982
m_frameHandler.SendHeader();
980983

981984
ConnectionStartDetails connectionStart = (ConnectionStartDetails)
982-
connectionStartCell.Value;
985+
connectionStartCell.Value;
983986

984987
ServerProperties = connectionStart.m_serverProperties;
985988

@@ -1002,13 +1005,13 @@ public void Open(bool insist)
10021005
ConnectionTuneDetails connectionTune = default(ConnectionTuneDetails);
10031006
try
10041007
{
1005-
connectionTune =
1006-
m_model0.ConnectionStartOk(m_clientProperties,
1007-
"PLAIN",
1008-
Encoding.UTF8.GetBytes(
1009-
"\0" + m_factory.UserName +
1010-
"\0" + m_factory.Password),
1011-
"en_US");
1008+
connectionTune =
1009+
m_model0.ConnectionStartOk(m_clientProperties,
1010+
"PLAIN",
1011+
Encoding.UTF8.GetBytes(
1012+
"\0" + m_factory.UserName +
1013+
"\0" + m_factory.Password),
1014+
"en_US");
10121015
}
10131016
catch (OperationInterruptedException e)
10141017
{
@@ -1031,18 +1034,15 @@ public void Open(bool insist)
10311034
m_model0.ConnectionTuneOk(channelMax,
10321035
frameMax,
10331036
heartbeat);
1037+
}
10341038

1035-
if (Protocol.SupportsRedirect)
1036-
{
1037-
string knownHosts = m_model0.ConnectionOpen(m_factory.VirtualHost,
1038-
"", // FIXME: make configurable?
1039-
insist);
1040-
KnownHosts = AmqpTcpEndpoint.ParseMultiple(Protocol, knownHosts);
1041-
}
1042-
else
1043-
{
1044-
m_model0.ConnectionOpen(m_factory.VirtualHost, String.Empty, false);
1045-
}
1039+
public virtual void Open(bool insist)
1040+
{
1041+
OpenCommon();
1042+
string knownHosts = m_model0.ConnectionOpen(m_factory.VirtualHost,
1043+
"", // FIXME: make configurable?
1044+
insist);
1045+
KnownHosts = AmqpTcpEndpoint.ParseMultiple(Protocol, knownHosts);
10461046
}
10471047

10481048
public override string ToString()

projects/client/RabbitMQ.Client/src/client/impl/v0_9_1/Connection.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,5 +61,12 @@ namespace RabbitMQ.Client.Framing.Impl.v0_9_1 {
6161
public class Connection: ConnectionBase {
6262
public Connection(ConnectionFactory factory, bool insist, IFrameHandler frameHandler)
6363
: base(factory, insist, frameHandler) {}
64+
65+
public override void Open(bool insist)
66+
{
67+
OpenCommon();
68+
m_model0.ConnectionOpen(m_factory.VirtualHost, String.Empty, false);
69+
}
70+
6471
}
6572
}

0 commit comments

Comments
 (0)