diff options
Diffstat (limited to 'dotnet/Qpid.Client/Client/QpidConnectionInfo.cs')
| -rw-r--r-- | dotnet/Qpid.Client/Client/QpidConnectionInfo.cs | 66 |
1 files changed, 50 insertions, 16 deletions
diff --git a/dotnet/Qpid.Client/Client/QpidConnectionInfo.cs b/dotnet/Qpid.Client/Client/QpidConnectionInfo.cs index 914170467a..d88683f7d5 100644 --- a/dotnet/Qpid.Client/Client/QpidConnectionInfo.cs +++ b/dotnet/Qpid.Client/Client/QpidConnectionInfo.cs @@ -171,19 +171,10 @@ namespace Qpid.Client sb.Append('?'); foreach (String key in options.Keys) { - sb.Append(key); - - sb.Append("='"); - - sb.Append(options[key]); - - sb.Append("'"); - sb.Append(DEFAULT_OPTION_SEPERATOR); + sb.AppendFormat("{0}='{1}'{2}", key, options[key], DEFAULT_OPTION_SEPERATOR); } sb.Remove(sb.Length - 1, 1); - // sb.deleteCharAt(sb.length() - 1); - return sb.ToString(); } } @@ -358,9 +349,10 @@ namespace Qpid.Client public class QpidConnectionInfo : IConnectionInfo { + const string DEFAULT_VHOST = "/"; string _username = "guest"; string _password = "guest"; - string _virtualHost = "/"; + string _virtualHost = DEFAULT_VHOST; string _failoverMethod = null; IDictionary _failoverOptions = new Hashtable(); @@ -385,15 +377,51 @@ namespace Qpid.Client public string AsUrl() { - string result = "amqp://"; - foreach (IBrokerInfo info in _brokerInfos) + StringBuilder sb = new StringBuilder(); + sb.AppendFormat("{0}://", ConnectionUrlConstants.AMQ_PROTOCOL); + + if (_username != null) { - result += info.ToString(); + sb.Append(_username); + if (_password != null) + { + sb.AppendFormat(":{0}", _password); + } + sb.Append("@"); } - return result; + sb.Append(_clientName); + sb.Append(_virtualHost); + sb.Append(OptionsToString()); + + return sb.ToString(); } + private String OptionsToString() + { + StringBuilder sb = new StringBuilder(); + sb.AppendFormat("?{0}='", ConnectionUrlConstants.OPTIONS_BROKERLIST); + + foreach (IBrokerInfo broker in _brokerInfos) + { + sb.AppendFormat("{0};", broker); + } + + sb.Remove(sb.Length - 1, 1); + sb.Append("'"); + + if (_failoverMethod != null) + { + sb.AppendFormat("{0}{1}='{2}{3}'", URLHelper.DEFAULT_OPTION_SEPERATOR, + ConnectionUrlConstants.OPTIONS_FAILOVER, + _failoverMethod, + URLHelper.printOptions((Hashtable)_failoverOptions)); + } + + return sb.ToString(); + } + + public string FailoverMethod { get { return _failoverMethod; } @@ -449,7 +477,13 @@ namespace Qpid.Client public string VirtualHost { get { return _virtualHost; } - set { _virtualHost = value; } + set { + _virtualHost = value; + if ( _virtualHost == null || _virtualHost.Length == 0 ) + _virtualHost = DEFAULT_VHOST; + if ( _virtualHost[0] != '/' ) + _virtualHost = '/' + _virtualHost; + } } public string GetOption(string key) |
