Ignore:
Timestamp:
Aug 2, 2017, 6:46:15 PM (7 years ago)
Author:
alloc
Message:

Fixes update A16.2

File:
1 edited

Legend:

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

    r279 r306  
    88using System.Net.Sockets;
    99using System.Threading;
     10using AllocsFixes.NetConnections.Servers.Web.API;
    1011
    1112namespace AllocsFixes.NetConnections.Servers.Web
     
    1314        public class WebCommandResult : IConsoleConnection
    1415        {
     16                public enum ResultType {
     17                        Full,
     18                        ResultOnly,
     19                        Raw
     20                }
     21
    1522                public static int handlingCount = 0;
    1623                public static int currentHandlers = 0;
     
    2027                private string command;
    2128                private string parameters;
     29                private ResultType responseType;
    2230
    23                 public WebCommandResult (string _command, string _parameters, HttpListenerResponse _response) {
     31                public WebCommandResult (string _command, string _parameters, ResultType _responseType, HttpListenerResponse _response) {
    2432                        Interlocked.Increment (ref handlingCount);
    2533                        Interlocked.Increment (ref currentHandlers);
     
    2836                        command = _command;
    2937                        parameters = _parameters;
     38                        responseType = _responseType;
    3039                }
    3140
     
    3847                        }
    3948
    40                         JSONObject result = new JSONObject ();
    41 
    42                         result.Add ("command", new JSONString (command));
    43                         result.Add ("parameters", new JSONString (parameters));
    44                         result.Add ("result", new JSONString (sb.ToString ()));
    45 
    4649                        response.SendChunked = false;
    4750
    4851                        try {
    49                                 WriteJSON (response, result);
     52                                if (responseType == ResultType.Raw) {
     53                                        WebAPI.WriteText (response, sb.ToString ());
     54                                } else {
     55                                        JSONNode result;
     56                                        if (responseType == ResultType.ResultOnly) {
     57                                                result = new JSONString (sb.ToString ());
     58                                        } else {
     59                                                JSONObject resultObj = new JSONObject ();
     60
     61                                                resultObj.Add ("command", new JSONString (command));
     62                                                resultObj.Add ("parameters", new JSONString (parameters));
     63                                                resultObj.Add ("result", new JSONString (sb.ToString ()));
     64
     65                                                result = resultObj;
     66                                        }
     67                                        WebAPI.WriteJSON (response, result);
     68                                }
    5069                        } catch (IOException e) {
    5170                                if (e.InnerException is SocketException) {
     
    6281
    6382                                msw.Stop ();
    64                                 totalHandlingTime += msw.ElapsedMicroseconds;
    65                                 Log.Out ("WebCommandResult.SendLines(): Took {0} µs", msw.ElapsedMicroseconds);
     83                                if (GamePrefs.GetInt (EnumGamePrefs.HideCommandExecutionLog) < 1) {
     84                                        totalHandlingTime += msw.ElapsedMicroseconds;
     85                                        Log.Out ("WebCommandResult.SendLines(): Took {0} µs", msw.ElapsedMicroseconds);
     86                                }
    6687                                Interlocked.Decrement (ref currentHandlers);
    6788                        }
    68                 }
    69 
    70                 public void WriteJSON (HttpListenerResponse resp, JSON.JSONNode root)
    71                 {
    72                         byte[] buf = Encoding.UTF8.GetBytes (root.ToString());
    73                         resp.ContentLength64 = buf.Length;
    74                         resp.ContentType = "application/json";
    75                         resp.ContentEncoding = Encoding.UTF8;
    76                         resp.OutputStream.Write (buf, 0, buf.Length);
    7789                }
    7890
Note: See TracChangeset for help on using the changeset viewer.