TcpPortSharing.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / SMSvcHost / System / ServiceModel / Activation / TcpPortSharing.cs / 1 / TcpPortSharing.cs

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

namespace System.ServiceModel.Activation 
{
    using System.ServiceProcess; 
    using System.Threading; 
    using System.ServiceModel.Activation.Diagnostics;
    using System.Diagnostics; 
    using System.ServiceModel.Diagnostics;

    class TcpPortSharing : ServiceBase
    { 
        TcpPortSharingCore serviceCore;
 
        internal TcpPortSharing() 
            : base()
        { 
            this.serviceCore = new TcpPortSharingCore();

            this.ServiceName = ListenerConstants.TcpPortSharingServiceName;
            this.CanPauseAndContinue = true; 
            this.CanHandlePowerEvent = SharingService.CanHandlePowerEvent;
            this.AutoLog = SharingService.AutoLog; 
            this.CanStop = SharingService.CanStop; 
            this.CanShutdown = SharingService.CanShutdown;
        } 

        internal bool IsPaused { get { return serviceCore.IsPaused; } }

        protected override void OnContinue() 
        {
            if (DiagnosticUtility.ShouldTraceInformation) 
            { 
                ListenerTraceUtility.TraceEvent(TraceEventType.Information, TraceCode.ServiceContinue, this);
            } 

            serviceCore.OnContinue();
        }
 
#if DEBUG
        protected override void OnCustomCommand(int command) 
        { 
            serviceCore.OnCustomCommand(command);
        } 
#endif

        protected override void OnPause()
        { 
            if (DiagnosticUtility.ShouldTraceInformation)
            { 
                ListenerTraceUtility.TraceEvent(TraceEventType.Information, TraceCode.ServicePause, this); 
            }
 
            serviceCore.OnPause();
        }

        protected override void OnShutdown() 
        {
            if (DiagnosticUtility.ShouldTraceInformation) 
            { 
                ListenerTraceUtility.TraceEvent(TraceEventType.Information, TraceCode.ServiceShutdown, this);
            } 

            base.RequestAdditionalTime(ListenerConstants.ServiceStopTimeout);
            serviceCore.OnShutdown();
            Stop(); 
        }
 
        protected override void OnStart(string[] args) 
        {
            try 
            {
                if (DiagnosticUtility.ShouldTraceInformation)
                {
                    ListenerTraceUtility.TraceEvent(TraceEventType.Information, TraceCode.ServiceStart, this); 
                }
 
                ListenerConfig.EnsureInitializedForNetTcp(); 

#if DEBUG 
                if (DebuggableService.DelayStart(ServiceName))
                {
                    (new Thread(new ThreadStart(Start))).Start();
                    return; 
                }
#endif 
                Start(); 
            }
            catch (Exception exception) 
            {
                // Log the error to eventlog.
                ListenerTraceUtility.EventLog.LogEvent(TraceEventType.Error,
                    System.ServiceModel.Diagnostics.EventLogCategory.SharingService, 
                    System.ServiceModel.Diagnostics.EventLogEventId.ServiceStartFailed,
                    false, 
                    exception.ToString()); 

                throw; 
            }
        }

        void Start() 
        {
#if DEBUG 
            DebuggableService.WaitForDebugger(ServiceName); 
#endif
            serviceCore.Start(); 
        }

        protected override void OnStop()
        { 
            if (DiagnosticUtility.ShouldTraceInformation)
            { 
                ListenerTraceUtility.TraceEvent(TraceEventType.Information, TraceCode.ServiceStop, this); 
            }
 
            base.RequestAdditionalTime(ListenerConstants.ServiceStopTimeout);
            serviceCore.OnStop();
        }
 
        class TcpPortSharingCore : SharingService
        { 
            internal TcpPortSharingCore() 
                : base(TransportType.Tcp, ListenerConstants.TcpPortSharingServiceName, ListenerConstants.TcpSharedMemoryName)
            { 
            }
        }
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK