static public void saveRegistro(String text, levels logLevel) { try { switch (logLevel) { case levels.debug: logger.Debug(text); break; case levels.error: logger.Error(text); break; case levels.info: logger.Info(text); break; case levels.warning: logger.Warn(text); break; default: logger.Info(text); break; } } catch (Exception ex) { EventLog ev = new EventLog(); ev.WriteEntry(ex.Message, EventLogEntryType.Error); } }
async void ConnectionLoop() { listener.Start(backlog); logger.Info("Listening on {0}", listener.LocalEndpoint); while (true) { try { var client = await listener.AcceptTcpClientAsync(); var sessionId = ++acceptedSessions; HandleNewConnection(sessionId, client); } catch (SocketException e) { if (lifeCycleToken.IsShutdown) // triggered by listener.Stop() { logger.Info("Listener shutting down"); break; } else { logger.Error("Exception while accepting TcpClient - {0}", e.ToString()); } } } logger.Info("Listener closed (accepted: {0})", acceptedSessions); router.Shutdown(); }
public async Task <HandleResult> HandleRequest(HttpRequest httpReq, DateTime requestArrivedOn) { var requestedHost = httpReq.Host; if (string.IsNullOrEmpty(requestedHost)) { return(new HandleResult(-1, -1, BadRequest)); } int routeTableIndex, endpointIndex; HttpResponse httpResp; if ((routeTableIndex = MatchRouteTable(requestedHost)) < 0) { endpointIndex = -1; httpResp = NotFound; // no matching host } else { RouteTable routeTable = routeTables[routeTableIndex]; //TODO: httpReq = filterChain.FilterRequest(httpReq); IReadOnlyDictionary <string, string> pathVariables; if ((endpointIndex = routeTable.TryMatchEndpoint(httpReq.Method, httpReq.Url, out pathVariables)) < 0) { httpResp = NotFound; // no matching route } else { httpReq.PathVariables = pathVariables; try { httpResp = await routeTable[endpointIndex].Handler(httpReq).ConfigureAwait(false); } catch (RequestException e) { httpResp = new ErrorResponse(e.HttpStatusCode, e); } catch (Exception e) { logger.Error("Error handling request:[{0}:{1}] - [{2}]: {3}", httpReq.Method, httpReq.Path, e.GetType().Name, e); httpResp = new ErrorResponse(HttpStatusCode.InternalServerError, e); } } //TODO: httpResp = routeTable.FilterResponse(httpReq, httpResp); if (endpointIndex >= 0) { // int spins = 0; while (!requestLogs.TryAdd(routeTableIndex, endpointIndex, httpReq, httpResp, requestArrivedOn, DateTime.UtcNow)) { // spins++; timer.Signal(); // await Task.Yield(); } // if (spins > 0) // { // logger.Warn("Incurred {0} spins to add request log", spins); // } } } return(new HandleResult(routeTableIndex, endpointIndex, httpResp)); }