Ignore:
Timestamp:
Nov 16, 2018, 10:38:46 PM (6 years ago)
Author:
alloc
Message:

*Latest optimizations

File:
1 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/MapRendering/Web/Web.cs

    r326 r332  
    1010using AllocsFixes.NetConnections.Servers.Web.Handlers;
    1111using UnityEngine;
     12using UnityEngine.Profiling;
    1213
    1314namespace AllocsFixes.NetConnections.Servers.Web {
     
    1920                private readonly HttpListener _listener = new HttpListener ();
    2021                private readonly string dataFolder;
    21                 private readonly Dictionary<string, PathHandler> handlers = new Dictionary<string, PathHandler> ();
     22                private readonly Dictionary<string, PathHandler> handlers = new CaseInsensitiveStringDictionary<PathHandler> ();
    2223                private readonly bool useStaticCache;
    2324
     
    147148                        return false;
    148149                }
     150               
     151                private readonly Version HttpProtocolVersion = new Version(1, 1);
     152               
     153#if ENABLE_PROFILER
     154                private readonly CustomSampler authSampler = CustomSampler.Create ("Auth");
     155                private readonly CustomSampler handlerSampler = CustomSampler.Create ("Handler");
     156#endif
    149157
    150158                private void HandleRequest (IAsyncResult result) {
     
    157165
    158166//                              MicroStopwatch msw = new MicroStopwatch ();
     167#if ENABLE_PROFILER
     168                        Profiler.BeginThreadProfiling ("AllocsMods", "WebRequest");
     169                        HttpListenerContext ctx = _listener.EndGetContext (result);
     170                        try {
     171#else
    159172                        HttpListenerContext ctx = _listener.EndGetContext (result);
    160173                        _listener.BeginGetContext (HandleRequest, _listener);
     174#endif
    161175                        try {
    162176                                HttpListenerRequest request = ctx.Request;
     
    164178                                response.SendChunked = false;
    165179
    166                                 response.ProtocolVersion = new Version ("1.1");
     180                                response.ProtocolVersion = HttpProtocolVersion;
    167181
    168182                                WebConnection conn;
     183#if ENABLE_PROFILER
     184                                authSampler.Begin ();
     185#endif
    169186                                int permissionLevel = DoAuthentication (request, out conn);
     187#if ENABLE_PROFILER
     188                                authSampler.End ();
     189#endif
    170190
    171191
     
    200220                                                                }
    201221                                                        } else {
     222#if ENABLE_PROFILER
     223                                                                handlerSampler.Begin ();
     224#endif
    202225                                                                kvp.Value.HandleRequest (request, response, conn, permissionLevel);
     226#if ENABLE_PROFILER
     227                                                                handlerSampler.End ();
     228#endif
    203229                                                        }
    204230
     
    230256                                Interlocked.Decrement (ref currentHandlers);
    231257                        }
     258#if ENABLE_PROFILER
     259                        } finally {
     260                                _listener.BeginGetContext (HandleRequest, _listener);
     261                                Profiler.EndThreadProfiling ();
     262                        }
     263#endif
    232264                }
    233265
     
    241273
    242274                        if (!string.IsNullOrEmpty (sessionId)) {
    243                                 WebConnection con = connectionHandler.IsLoggedIn (sessionId, _req.RemoteEndPoint.Address.ToString ());
     275                                WebConnection con = connectionHandler.IsLoggedIn (sessionId, _req.RemoteEndPoint.Address);
    244276                                if (con != null) {
    245277                                        _con = con;
     
    259291                        }
    260292
    261                         if (_req.Url.AbsolutePath.StartsWith ("/session/verify")) {
     293                        if (_req.Url.AbsolutePath.StartsWith ("/session/verify", StringComparison.OrdinalIgnoreCase)) {
    262294                                try {
    263295                                        ulong id = OpenID.Validate (_req);
    264296                                        if (id > 0) {
    265                                                 WebConnection con = connectionHandler.LogIn (id, _req.RemoteEndPoint.Address.ToString ());
     297                                                WebConnection con = connectionHandler.LogIn (id, _req.RemoteEndPoint.Address);
    266298                                                _con = con;
    267299                                                int level = GameManager.Instance.adminTools.GetAdminToolsClientInfo (id.ToString ())
Note: See TracChangeset for help on using the changeset viewer.