public static CollectorBuilder ReadMemoryWith <T> (this CollectorBuilder builder) where T : DirectMemoryReader { builder.Builder.RegisterType <T>().As <DirectMemoryReader>(); return(builder); }
protected override bool BuildCollectScope(CollectorBuilder builder, OsuProcessMatchedEvent @event) => builder .ReadMemoryWith <WindowsReader>() .UseOsuProcessEvent(@event) .UseCollectorManager(manager => manager .Collect <Beatmap>() .Collect <GameMode>() .Collect <GameStatus>() .Collect <GlobalGameModerator>() .Collect <Playing>() .Collect <MultiplayerBeatmapId>() ) .Build();
public static CollectorBuilder UseOsuProcessEvent(this CollectorBuilder builder, OsuProcessMatchedEvent @event) { builder.Builder.RegisterInstance(@event).SingleInstance(); builder.Builder.Register((ctx) => { var process = Process.GetProcessById(ctx.Resolve <OsuProcessMatchedEvent>().ProcessId); if (process == null || process.HasExited) { throw new EntryPointNotFoundException(); } return(process); }).As <Process>(); return(builder); }