mysimulation/server/FSO.Server.Debug/NetworkStash.cs
Tony Bark 22191ce648 Removed NioTSO client and server
- NioTSO client isn't needed because we're using RayLib
- Added FreeSO's API server to handle most backend operations
2024-05-01 02:55:43 -04:00

97 lines
2.5 KiB
C#
Executable file

using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.IO;
using Newtonsoft.Json.Converters;
using FSO.Server.Common;
using FSO.Common.Utils;
using tso.debug.network;
namespace FSO.Server.Debug
{
public class NetworkStash
{
private static JsonSerializerSettings SETTINGS;
static NetworkStash()
{
SETTINGS = new JsonSerializerSettings();
SETTINGS.Formatting = Formatting.Indented;
SETTINGS.Converters.Add(new StringEnumConverter());
}
private string Dir;
public List<NetworkStashItem> Items;
public NetworkStash(string dir)
{
this.Dir = dir;
this.Items = new List<NetworkStashItem>();
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
string[] files = Directory.GetFiles(dir);
foreach (var file in files)
{
if (file.EndsWith(".json"))
{
var parsedItem = JsonConvert.DeserializeObject<NetworkStashItem>(File.ReadAllText(file), SETTINGS);
this.Items.Add(parsedItem);
}
}
}
public void Add(string name, RawPacketReference[] packets)
{
var item = new NetworkStashItem();
item.Name = name;
item.Packets = new List<NetworkStashItemPacket>();
foreach (var packet in packets)
{
item.Packets.Add(new NetworkStashItemPacket {
Type = packet.Packet.Type,
SubType = (ushort)packet.Packet.SubType,
Data = packet.Packet.Data,
Direction = packet.Packet.Direction
});
}
this.Items.Add(item);
var jsonData = JsonConvert.SerializeObject(item, SETTINGS);
File.WriteAllText(Path.Combine(Dir, "stash-" + DateTime.Now.Ticks + ".json"), jsonData);
}
}
public class NetworkStashItem
{
[JsonProperty]
public string Name;
[JsonProperty]
public List<NetworkStashItemPacket> Packets;
}
public class NetworkStashItemPacket
{
[JsonProperty]
public PacketType Type;
[JsonProperty]
public uint SubType;
[JsonProperty]
public PacketDirection Direction;
[JsonConverter(typeof(Base64JsonConverter))]
public byte[] Data;
}
}