internal void Start(Socket s, PortListener listener, X509Certificate cert,long id)
 {
     _idleTimer = new Timer(new TimerCallback(_IdleTimeout), null, _CONNECTION_IDLE_TIMEOUT, Timeout.Infinite);
     _rand = new MT19937(id);
     _buffer = new byte[_BUFFER_SIZE];
     _requests = new List<HttpRequest>();
     _parser.RequestLineRecieved = _RequestLineRecieved;
     _shutdown = false;
     _id = id;
     socket = s;
     _listener = listener;
     _cert = cert;
     _currentConnection = this;
     if (_listener.UseSSL)
     {
         _inputStream = new WrappedStream(new SslStream(new NetworkStream(socket), true));
         _inputStream.AuthenticateAsServer(_cert);
     }
     else
         _inputStream = new WrappedStream(new NetworkStream(socket));
     _inputStream.BeginRead(_buffer, 0, _buffer.Length, new AsyncCallback(OnReceive), null);
 }