source: binary-improvements/MapRendering/Web/API/WebAPI.cs @ 332

Last change on this file since 332 was 332, checked in by alloc, 5 years ago

*Latest optimizations

File size: 1.5 KB
Line 
1using System.Net;
2using System.Text;
3using AllocsFixes.JSON;
4using UnityEngine.Profiling;
5
6namespace AllocsFixes.NetConnections.Servers.Web.API {
7        public abstract class WebAPI {
8                public readonly string Name;
9
10                protected WebAPI () {
11                        Name = GetType ().Name;
12                }
13
14#if ENABLE_PROFILER
15                private static readonly CustomSampler jsonSerializeSampler = CustomSampler.Create ("JSON_Serialize");
16                private static readonly CustomSampler netWriteSampler = CustomSampler.Create ("JSON_Write");
17#endif
18
19                public static void WriteJSON (HttpListenerResponse resp, JSONNode root) {
20#if ENABLE_PROFILER
21                        jsonSerializeSampler.Begin ();
22#endif
23                        StringBuilder sb = new StringBuilder ();
24                        root.ToString (sb);
25#if ENABLE_PROFILER
26                        jsonSerializeSampler.End ();
27                        netWriteSampler.Begin ();
28#endif
29                        byte[] buf = Encoding.UTF8.GetBytes (sb.ToString ());
30                        resp.ContentLength64 = buf.Length;
31                        resp.ContentType = "application/json";
32                        resp.ContentEncoding = Encoding.UTF8;
33                        resp.OutputStream.Write (buf, 0, buf.Length);
34#if ENABLE_PROFILER
35                        netWriteSampler.End ();
36#endif
37                }
38
39                public static void WriteText (HttpListenerResponse _resp, string _text) {
40                        byte[] buf = Encoding.UTF8.GetBytes (_text);
41                        _resp.ContentLength64 = buf.Length;
42                        _resp.ContentType = "text/plain";
43                        _resp.ContentEncoding = Encoding.UTF8;
44                        _resp.OutputStream.Write (buf, 0, buf.Length);
45                }
46
47                public abstract void HandleRequest (HttpListenerRequest req, HttpListenerResponse resp, WebConnection user,
48                        int permissionLevel);
49
50                public virtual int DefaultPermissionLevel () {
51                        return 0;
52                }
53        }
54}
Note: See TracBrowser for help on using the repository browser.