//----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//----------------------------------------------------------------------------

namespace System.ServiceModel.WasHosting
{
    using System.Diagnostics.CodeAnalysis;
    using System.Runtime;
    using System.ServiceModel.Activation;
    using System.ServiceModel.Channels;

    [SuppressMessage(FxCop.Category.Performance, FxCop.Rule.AvoidUninstantiatedInternalClasses,
        Justification = "Instantiated by ASP.NET")]
    class TcpAppDomainProtocolHandler : BaseAppDomainProtocolHandler
    {
        HostedTcpTransportManager transportManager;
        public TcpAppDomainProtocolHandler()
            : base(Uri.UriSchemeNetTcp)
        {
        }

        protected override void OnStart()
        {
            TcpHostedTransportConfiguration configuration = HostedTransportConfigurationManager.GetConfiguration(Uri.UriSchemeNetTcp) as TcpHostedTransportConfiguration;
            transportManager = configuration.TransportManager as HostedTcpTransportManager;
            transportManager.Start(listenerChannelContext.ListenerChannelId, listenerChannelContext.Token, OnMessageReceived);
        }

        protected override void OnStop()
        {
            if (transportManager != null)
            {
                transportManager.Stop(DefaultStopTimeout);
            }
        }
    }
}