| /* |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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 |
| * |
| * http://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. |
| * |
| */ |
| |
| using System.Configuration; |
| using System.ServiceModel; |
| using System.ServiceModel.Channels; |
| |
| namespace org.apache.qpid.wcf.model |
| { |
| public sealed class QpidBinding : Binding |
| { |
| private string _host; |
| private int _port; |
| private string _username; |
| private string _password; |
| private string _virtuaHost; |
| private readonly CompositeDuplexBindingElement _compositeDuplex; |
| private readonly MessageEncodingBindingElement _encoding; |
| private bool _oneWayOnly; |
| private readonly ReliableSessionBindingElement _session; |
| private readonly TransactionFlowBindingElement _transactionFlow; |
| private bool _transactionsEnabled; |
| private readonly QpidTransportBindingElement _transport; |
| |
| |
| |
| public QpidBinding() : this("localhost", 5672, "guest", "guest", "test") |
| { |
| } |
| |
| |
| public QpidBinding(string host, int port ) : this (host, port, "guest", "guest", "test") |
| { |
| } |
| |
| public QpidBinding(string host, int port, string username, string password, string virtualhost) |
| { |
| Host = host; |
| PortNumber = port; |
| UserName = username; |
| Password = password; |
| VirtualHost = virtualhost; |
| _transport = new QpidTransportBindingElement(); |
| _transport.Host = host; |
| _transport.PortNumber = port; |
| _transport.Password = password; |
| _transport.UserName = username; |
| _transport.VirtualHost = virtualhost; |
| _encoding = new TextMessageEncodingBindingElement(); |
| _session = new ReliableSessionBindingElement(); |
| _compositeDuplex = new CompositeDuplexBindingElement(); |
| _transactionFlow = new TransactionFlowBindingElement(); |
| } |
| |
| public override BindingElementCollection CreateBindingElements() |
| { |
| var elements = new BindingElementCollection(); |
| |
| if (_transactionsEnabled) |
| { |
| elements.Add(_transactionFlow); |
| } |
| if (!OneWayOnly) |
| { |
| elements.Add(_session); |
| elements.Add(_compositeDuplex); |
| } |
| elements.Add(_encoding); |
| elements.Add(_transport); |
| |
| return elements; |
| } |
| |
| |
| |
| /// <summary> |
| /// Gets the scheme used by the binding, soap.amqp |
| /// </summary> |
| public override string Scheme |
| { |
| get { return "soap.amqp"; } |
| } |
| |
| /// <summary> |
| /// Specifies the broker host |
| /// </summary> |
| [ConfigurationProperty("host")] |
| public string Host |
| { |
| get { return _host; } |
| set { _host = value; } |
| } |
| |
| /// <summary> |
| /// Specifies the broker port |
| /// </summary> |
| public int PortNumber |
| { |
| get { return _port; } |
| set { _port = value; } |
| } |
| |
| /// <summary> |
| /// Specifies the username |
| /// </summary> |
| public string UserName |
| { |
| get { return _username; } |
| set { _username = value; } |
| } |
| |
| /// <summary> |
| /// Specifies the password |
| /// </summary> |
| public string Password |
| { |
| get { return _password; } |
| set { _password = value; } |
| } |
| |
| /// <summary> |
| /// Specifies the virtualhost |
| /// </summary> |
| public string VirtualHost |
| { |
| get { return _virtuaHost; } |
| set { _virtuaHost = value; } |
| } |
| |
| |
| /// <summary> |
| /// Gets the AMQP _transport binding element |
| /// </summary> |
| public QpidTransportBindingElement Transport |
| { |
| get { return _transport; } |
| } |
| |
| /// <summary> |
| /// Gets the reliable _session parameters for this binding instance |
| /// </summary> |
| public ReliableSession ReliableSession |
| { |
| get { return new ReliableSession(_session); } |
| } |
| |
| /// <summary> |
| /// Determines whether or not the TransactionFlowBindingElement will |
| /// be added to the channel stack |
| /// </summary> |
| public bool TransactionFlow |
| { |
| get { return _transactionsEnabled; } |
| set { _transactionsEnabled = value; } |
| } |
| |
| /// <summary> |
| /// Specifies whether or not the CompositeDuplex and ReliableSession |
| /// binding elements are added to the channel stack. |
| /// </summary> |
| public bool OneWayOnly |
| { |
| get { return _oneWayOnly; } |
| set { _oneWayOnly = value; } |
| } |
| } |
| } |