private void Dispatch(Socket socket)
 {
     var request = new Request(socket);
     try
     {
         if (string.IsNullOrEmpty(request.File))
         {
             SendEmptyResponse(request);
         }
         else
         {
             var handler = this.ResolveHandler(request.File);
             new Worker(request).Process(handler);
         }
     }
     catch (Exception ex)
     {
         ExceptionPolicy.HandleException(ex);
         SendInternalServerResponse(request);
     }
 }
        public Worker(Request request)
        {
            if (request == null) throw new ArgumentException();

            this._request = request;
        }
 private void SendEmptyResponse(Request request)
 {
     var response = new Response(request.Socket);
     response.Status = Constants.STATUS_CODE_204;
     response.ReasonPhrase = "No Content";
     response.Send();
 }
 private void SendInternalServerResponse(Request request)
 {
     var response = new Response(request.Socket);
     response.Status = Constants.STATUS_CODE_500;
     response.ReasonPhrase = "Internal Server Error";
     response.Send();
 }