using ICRebuild.Core; namespace ICRebuild.Runtime; // Feature 36 owns subscriptions; native hooks may also serve independent consumers. public sealed class NetworkCapture(NetworkManager network,ModuleManager modules,PacketBuffer buffer) { private readonly PacketRecorder recorder=new(buffer); public long Errors => network.Pipeline.ReadErrors; public long CompleteUp => recorder.CompleteUp; public long CompleteDown => recorder.CompleteDown; public long MetadataOnly => recorder.MetadataOnly; public string LastIssue => network.Pipeline.LastIssue; public void Register() => modules.Register(36,scope => { network.Observe(scope,NetworkPhase.Received,recorder.Record); network.Observe(scope,NetworkPhase.BeforeSend,recorder.Record); scope.Defer(()=>buffer.Paused=true); buffer.Paused=false; }); }