Inheritance: LifeCycleBase
Beispiel #1
0
        public HttpBackend(IPAddress address,
                           int port,
                           int maxKeepAlives=100,
                           int backlog=128,
                           int sessionReadBufferSize=4096,
                           int sessionReadTimeoutMs=5000,
                           int sessionWriteTimeoutMs=5000)
        {
            this.port = port;
            listener = new TcpListener(address, port);
            this.maxKeepAlives = maxKeepAlives;
            this.backlog = backlog;
            this.sessionReadBufferSize = sessionReadBufferSize;
            sessionReadTimeout = TimeSpan.FromMilliseconds(sessionReadTimeoutMs);
            sessionWriteTimeout = TimeSpan.FromMilliseconds(sessionWriteTimeoutMs);
            lifeCycleToken = new LifeCycleToken();
            sessionTable = new ConcurrentDictionary<long, HttpSession>();
            sessionReads = new ConcurrentDictionary<long, long>();
            webSocketSessionTable = new ConcurrentDictionary<long, WebSocketSession>();

            name = string.Format("{0}({1}:{2})", GetType().Name, address, port);

            timer = new WaitableTimer(name,
                                      TimeSpan.FromSeconds(1),
                                      new [] {
                                          new WaitableTimer.Job("CheckSessionReadTimeouts", CheckSessionReadTimeouts)
                                      });
        }
        public BCLHttpListenerBackend(string listenAddress, int listenPort)
        {
            ListenOn = string.Format("http://{0}:{1}/", listenAddress, listenPort);
            name = string.Format("HttpListenerBackend({0}:{1})", listenAddress, listenPort);
            listener = new HttpListener
            {
                IgnoreWriteExceptions = true,
            };
            listener.Prefixes.Add(ListenOn);
            getContexts = new Semaphore(Environment.ProcessorCount, Environment.ProcessorCount);

            lifeCycleToken = new LifeCycleToken();
        }