public async Task Test3() { SetupNlog.Initialize("bla"); MappingExtensions.Mapper = new MapperConfiguration(cfg => { cfg.AddProfile <ArmaServerProfile>(); }).CreateMapper(); var f = new SteamSession.SteamSessionFactory(); var id = (uint)SteamGameIds.Arma2Oa; LockedWrapper.callFactory = new SafeCallFactory(); // workaround for accessviolation errors var c = await f.Do(id, SteamHelper.Create().SteamPath, async() => { using (var scheduler = new EventLoopScheduler()) { using (var obs2 = new Subject <ArmaServerInfoModel>()) { var s = obs2.Synchronize() .ObserveOn(scheduler) .Buffer(24) //.Do(x => Console.WriteLine("r" + x.ToList<ServerInfoModel>())) .SelectMany(x => x) .Count() .ToTask(); var c2 = await SteamServers.GetServers(f, true, ServerFilterBuilder.Build().FilterByAppId(id).FilterByDedicated().Value, obs2.OnNext) .ConfigureAwait(false); obs2.OnCompleted(); return(new BatchResult(await s)); } } }).ConfigureAwait(false); }
private async Task <BatchResult> GetSteamServers() { using (var scheduler = new EventLoopScheduler()) { using (var obs2 = new Subject <ArmaServerInfoModel>()) { var s = obs2.Synchronize() .ObserveOn(scheduler) .Buffer(Message.PageSize) .Do(x => SendEvent(new ReceivedServerPageEvent(x.ToList <ServerInfoModel>()))) .SelectMany(x => x) .Count() .ToTask(); var c = await SteamServers.GetServers(SessionLocator, Message.IncludeRules, Message.Filter, obs2.OnNext) .ConfigureAwait(false); obs2.OnCompleted(); return(new BatchResult(await s)); } } }
protected override async Task <BatchResult> HandleInternal() { using (var scheduler = new EventLoopScheduler()) { using (var obs2 = new Subject <IPEndPoint>()) { var s = obs2.Synchronize() .ObserveOn(scheduler) .Buffer(Message.PageSize) .Do(x => SendEvent(new ReceivedServerAddressesPageEvent(x.ToList()))) .SelectMany(x => x) .Count() .ToTask(); var c = await SteamServers.GetServers(SessionLocator, false, Message.Filter, x => obs2.OnNext(x.QueryEndPoint)) .ConfigureAwait(false); obs2.OnCompleted(); return(new BatchResult(await s)); } } }