public void Start(string ip, UInt16 port, uint readBufferSize, uint timeout, X509Certificate2 certificate, HttpRequestProcessor httpRequestHandler, ResponseMaker internalServerError, LogManager logger)
        {
            if (ConnectionAcceptor == null)
            {
                ConnectionAcceptor = new TcpListener(IPAddress.Parse(ip), port);
            }

            if (Sessions == null)
            {
                Sessions = new ConcurrentDictionary <ulong, Session>();
            }

            this.ReadBufferSize         = readBufferSize;
            this.Timeout                = timeout;
            this.HttpRequestHandler     = httpRequestHandler;
            this.GetInternalServerError = internalServerError;
            this.Certificate            = certificate;
            this.Logger = logger;

            ConnectionAcceptor.Start();
            ConnectionAcceptor.BeginAcceptTcpClient(new AsyncCallback(OnAccept), this.ConnectionAcceptor);
        }