Initial import of IC.Rebuild

This commit is contained in:
2026-10-13 22:55:05 +08:00
commit 16d61f7a5e
87 changed files with 17054 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
namespace ICRebuild.Core;
// One consumer of the manager. Pausing and filtering affect only this log.
public sealed class PacketRecorder(PacketBuffer buffer)
{
private long completeUp,completeDown,metadataOnly;
public long CompleteUp => Interlocked.Read(ref completeUp);
public long CompleteDown => Interlocked.Read(ref completeDown);
public long MetadataOnly => Interlocked.Read(ref metadataOnly);
public void Record(NetworkObservation observation)
{
if(observation.Phase==NetworkPhase.AfterSend) return; // One record per message.
var packet=observation.Message;
if(!buffer.Add(packet.Direction,packet.Opcode,packet.GameVersion,null,packet.Target,packet.Payload,
packet.Complete,packet.Issue,observation.Context,packet.MonotonicTicks,packet.Time)) return;
if(!packet.Complete) Interlocked.Increment(ref metadataOnly);
else if(packet.Direction==PacketDirection.Up) Interlocked.Increment(ref completeUp);
else Interlocked.Increment(ref completeDown);
}
}