Ignore:
Timestamp:
Jan 27, 2023, 7:28:00 PM (22 months ago)
Author:
alloc
Message:
  • Major refactoring
  • Using Utf8Json for (de)serialization
  • Moving APIs to REST
  • Removing dependencies from WebServer and MapRenderer to ServerFixes
Location:
binary-improvements2/WebServer/src/SSE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements2/WebServer/src/SSE/AbsEvent.cs

    r399 r402  
    44using System.Net.Sockets;
    55using System.Text;
    6 using AllocsFixes.JSON;
    76using Webserver.UrlHandlers;
    87using HttpListenerResponse = SpaceWizards.HttpListener.HttpListenerResponse;
     
    2019                private readonly List<HttpListenerResponse> openStreams = new List<HttpListenerResponse> ();
    2120
    22                 private readonly BlockingQueue<(string _eventName, object _data)> sendQueue =
    23                         new BlockingQueue<(string _eventName, object _data)> ();
     21                private readonly BlockingQueue<(string _eventName, string _data)> sendQueue =
     22                        new BlockingQueue<(string _eventName, string _data)> ();
    2423
    2524                private int currentlyOpen;
     
    4241                }
    4342
    44                 protected void SendData (string _eventName, object _data) {
     43                protected void SendData (string _eventName, string _data) {
    4544                        sendQueue.Enqueue ((_eventName, _data));
    4645                        Parent.SignalSendQueue ();
    4746                }
    4847
    49 
    5048                public void ProcessSendQueue () {
    5149                        while (sendQueue.HasData ()) {
    52                                 (string eventName, object data) = sendQueue.Dequeue ();
     50                                (string eventName, string data) = sendQueue.Dequeue ();
    5351                               
    5452                                stringBuilder.Append ("event: ");
    5553                                stringBuilder.AppendLine (eventName);
    5654                                stringBuilder.Append ("data: ");
    57                                
    58                                 switch (data) {
    59                                         case string dataString:
    60                                                 stringBuilder.AppendLine (dataString);
    61                                                 break;
    62                                         case JsonNode dataJson:
    63                                                 dataJson.ToString (stringBuilder);
    64                                                 stringBuilder.AppendLine ("");
    65                                                 break;
    66                                         default:
    67                                                 logError ("Data is neither string nor JSON.", false);
    68                                                 continue;
    69                                 }
     55                                stringBuilder.AppendLine (data);
    7056                               
    7157                                stringBuilder.AppendLine ("");
     58
    7259                                string output = stringBuilder.ToString ();
    7360                                stringBuilder.Clear ();
     
    11198                                                if (e.InnerException is SocketException se) {
    11299                                                        if (se.SocketErrorCode != SocketError.ConnectionAborted && se.SocketErrorCode != SocketError.Shutdown) {
    113                                                                 logError ($"SocketError ({se.SocketErrorCode}) while trying to write", true);
     100                                                                logError ($"SocketError ({se.SocketErrorCode.ToStringCached ()}) while trying to write", true);
    114101                                                        }
    115102                                                } else {
  • binary-improvements2/WebServer/src/SSE/EventLog.cs

    r391 r402  
    11using System;
    2 using AllocsFixes.JSON;
    32using JetBrains.Annotations;
    43using UnityEngine;
     4using Utf8Json;
    55using Webserver.UrlHandlers;
    66
     
    1212                }
    1313
     14                private static readonly byte[] jsonMsgKey = JsonWriter.GetEncodedPropertyNameWithBeginObject ("msg");
     15                private static readonly byte[] jsonTypeKey = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("type");
     16                private static readonly byte[] jsonTraceKey = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("trace");
     17                private static readonly byte[] jsonIsotimeKey = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("isotime");
     18                private static readonly byte[] jsonUptimeKey = JsonWriter.GetEncodedPropertyNameWithPrefixValueSeparator ("uptime");
     19
    1420                private void LogCallback (string _formattedMsg, string _plainMsg, string _trace, LogType _type, DateTime _timestamp, long _uptime) {
    1521                        string isotime = _timestamp.ToString ("o");
    1622                        string uptime = _uptime.ToString ();
    1723
    18                         JsonObject data = new JsonObject ();
    19                         data.Add ("msg", new JsonString (_plainMsg));
    20                         data.Add ("type", new JsonString (_type.ToStringCached ()));
    21                         data.Add ("trace", new JsonString (_trace));
    22                         data.Add ("isotime", new JsonString (isotime));
    23                         data.Add ("uptime", new JsonString (uptime));
    24 
    25                         SendData ("logLine", data);
     24                        JsonWriter writer = new JsonWriter ();
     25                       
     26                        writer.WriteRaw (jsonMsgKey);
     27                        writer.WriteString (_plainMsg);
     28                       
     29                        writer.WriteRaw (jsonTypeKey);
     30                        writer.WriteString (_type.ToStringCached ());
     31                       
     32                        writer.WriteRaw (jsonTraceKey);
     33                        writer.WriteString (_trace);
     34                       
     35                        writer.WriteRaw (jsonIsotimeKey);
     36                        writer.WriteString (isotime);
     37                       
     38                        writer.WriteRaw (jsonUptimeKey);
     39                        writer.WriteString (uptime);
     40                       
     41                        writer.WriteEndObject ();
     42                       
     43                        SendData ("logLine", writer.ToString ());
    2644                }
    2745        }
Note: See TracChangeset for help on using the changeset viewer.