Exemple #1
0
 private void OnRequestHandler(PacketDecodeCompletedEventArgs e)
 {
     try
     {
         HttpToken token = (HttpToken)e.Session.Tag;
         if (token.WebSocket)
         {
             OnWebSocketRequest(token.Request, e.Session, (WebSockets.DataFrame)e.Message);
         }
         else
         {
             HttpRequest request = (HttpRequest)e.Message;
             if (EnableLog(LogType.Info))
             {
                 mServer.Log(LogType.Info, null, $"HTTP {request.ID} {request.RemoteIPAddress} {request.Method} {request.Url}");
             }
             if (EnableLog(LogType.Debug))
             {
                 mServer.Log(LogType.Debug, e.Session, $"HTTP {request.ID} {request.RemoteIPAddress} {request.Method} {request.Url} detail {request.ToString()}");
             }
             request.Server = this;
             HttpResponse response = request.CreateResponse();
             token.KeepAlive = request.KeepAlive;
             if (token.FirstRequest && string.Compare(request.Header[HeaderTypeFactory.UPGRADE], "websocket", true) == 0)
             {
                 token.FirstRequest = false;
                 OnWebSocketConnect(request, response);
             }
             else
             {
                 token.FirstRequest = false;
                 if (!Options.IOQueueEnabled)
                 {
                     OnHttpRequest(request, response);
                 }
                 else
                 {
                     IOQueueProcessArgs args = new IOQueueProcessArgs
                     {
                         Request  = request,
                         Response = response
                     };
                     token.IOQueue.Enqueue(args);
                 }
             }
         }
     }
     catch (Exception e_)
     {
         if (EnableLog(LogType.Error))
         {
             mServer.Error(e_, e.Session, $"HTTP {e.Session.RemoteEndPoint} {0} OnRequestHandler error {e_.Message}@{e_.StackTrace}");
         }
     }
 }
Exemple #2
0
 private void OnIOQueueProcess(IOQueueProcessArgs e)
 {
     try
     {
         OnHttpRequest(e.Request, e.Response);
     }
     catch (Exception e_)
     {
         if (EnableLog(LogType.Error))
         {
             mServer.Error(e_, e.Request.Session, "{0} On queue process error {1}", e.Request.Session.RemoteEndPoint, e_.Message);
         }
     }
 }
Exemple #3
0
 private void OnIOQueueProcess(IOQueueProcessArgs e)
 {
     try
     {
         if (!e.Request.Session.IsDisposed)
         {
             OnHttpRequest(e.Request, e.Response);
         }
     }
     catch (Exception e_)
     {
         if (EnableLog(LogType.Error))
         {
             mServer.Error(e_, e.Request.Session, $"HTTP {e.Request.ID} {e.Request.RemoteIPAddress} on queue process error {e_.Message}@{e_.StackTrace}");
         }
     }
 }