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
File:
1 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 {
Note: See TracChangeset for help on using the changeset viewer.