/* * * 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; } /// /// Gets the scheme used by the binding, soap.amqp /// public override string Scheme { get { return "soap.amqp"; } } /// /// Specifies the broker host /// [ConfigurationProperty("host")] public string Host { get { return _host; } set { _host = value; } } /// /// Specifies the broker port /// public int PortNumber { get { return _port; } set { _port = value; } } /// /// Specifies the username /// public string UserName { get { return _username; } set { _username = value; } } /// /// Specifies the password /// public string Password { get { return _password; } set { _password = value; } } /// /// Specifies the virtualhost /// public string VirtualHost { get { return _virtuaHost; } set { _virtuaHost = value; } } /// /// Gets the AMQP _transport binding element /// public QpidTransportBindingElement Transport { get { return _transport; } } /// /// Gets the reliable _session parameters for this binding instance /// public ReliableSession ReliableSession { get { return new ReliableSession(_session); } } /// /// Determines whether or not the TransactionFlowBindingElement will /// be added to the channel stack /// public bool TransactionFlow { get { return _transactionsEnabled; } set { _transactionsEnabled = value; } } /// /// Specifies whether or not the CompositeDuplex and ReliableSession /// binding elements are added to the channel stack. /// public bool OneWayOnly { get { return _oneWayOnly; } set { _oneWayOnly = value; } } } }