Beispiel #1
0
        public SocketServer(IPEndPoint endpoint, Socket listenSocket, SocketServerSettings settings, IWorkLoadThrottle workThrottle)
        {
            if (endpoint == null || listenSocket == null || settings == null)
            {
                throw new ArgumentNullException();
            }

            settings.Validate();
            m_settings = settings;

            m_endpoint     = endpoint;
            m_socket       = listenSocket;
            m_workThrottle = workThrottle ?? settings.CreateRequestThrottle();
            m_outstandingAcceptThrottle = settings.CreateAcceptThrottle();
            m_asyncArgsPool             = new SynchronizedObjectPool <SocketAsyncEventArgs>(m_settings.MaxOutstandingAccepts);
            m_forcedAsyncCallback       = new WaitCallback(this.ForcedAsyncComplete);

            m_listenerThread = new Thread(this.Run);
        }