/* * 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; using System.ServiceModel; using System.ServiceModel.Channels; namespace Apache.NMS.WCF { /// /// Client-side implementation of the sessioned one-way channel. /// internal class NmsOutputSessionChannel : NmsOutputChannel, IOutputSessionChannel { #region Constructors /// /// Initializes a new instance of the class. /// /// The factory that created this channel. /// The address of this channel. /// The URI that contains the transport address to which messages are sent on the output channel. /// The buffer manager. /// The encoder factory. /// The name of the ActiveMQ destination. /// The type of the ActiveMQ destination (either a queue or a topic, permanent or temporary). public NmsOutputSessionChannel(ChannelManagerBase factory, Uri via, EndpointAddress address, BufferManager bufferManager, MessageEncoderFactory encoderFactory, string destination, DestinationType destinationType) : base(factory, address, via, bufferManager, encoderFactory, destination, destinationType) { } #endregion #region ISessionChannel Members /// /// Gets the type of session associated with this channel. /// /// /// The type of associated with this channel. public IOutputSession Session { get { return _session; } } /// /// Internal implementation of a session, with tracking ID. /// private class OutputSession : IOutputSession, System.ServiceModel.Channels.ISession { private string _sessionId = NmsChannelHelper.CreateUniqueSessionId(); /// /// Gets the ID that uniquely identifies the session. /// /// /// The ID that uniquely identifies the session. public string Id { get { return _sessionId; } } } #endregion #region Private members private IOutputSession _session = new OutputSession(); #endregion } }