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); }
async Task <BatchResult> GetServersFromSteam(uint appId, IEnumerable <IPEndPoint> addresses, ServerQueryOptions options, Action <Server> act) { var cvt = GetConverter(options.InclExtendedDetails); var r = await Task.WhenAll(addresses.Batch(15).Select(b => { // Ports adjusted because it expects the Connection Port! var filter = ServerFilterBuilder.Build() .FilterByAddresses(b.Select(x => new IPEndPoint(x.Address, x.Port - 1)).ToList()); return(_steamHelperService.GetServers <ArmaServerInfoModel>(appId, new GetServers { Filter = filter.Value, IncludeDetails = options.InclExtendedDetails, IncludeRules = options.InclExtendedDetails, PageSize = 1 }, CancellationToken.None, x => { foreach (var s in x.Select(cvt)) { act(s); } })); })); return(new BatchResult(r.Sum(x => x.Count))); }
public async Task Test() { var q = new SourceMasterQuery(ServerFilterBuilder.Build().FilterByGame("arma3").FilterByDedicated().Value); var servers = await q.GetParsedServers(CancellationToken.None).ConfigureAwait(false); Console.WriteLine(string.Join(",", servers)); }
public async Task <BatchResult> GetServers(IServerQueryFactory factory, CancellationToken cancelToken, Action <List <IPEndPoint> > act) { var master = new SourceMasterQuery(ServerFilterBuilder.Build().FilterByGame("starbound").Value); return(new BatchResult(await master.GetParsedServersObservable(cancelToken) .Do(x => act(x.Items)) .SelectMany(x => x.Items) .Count())); }
public async Task <BatchResult> GetServerAddresses(uint appId, Action <List <IPEndPoint> > act, CancellationToken cancelToken) { var f = ServerFilterBuilder.Build() .FilterByGame("arma3"); var master = new SourceMasterQuery(f.Value); return(new BatchResult(await master.GetParsedServersObservable(cancelToken) .Do(x => act(x.Items)) .SelectMany(x => x.Items) .Count())); }
public async Task Test2() { var s = new SteamServiceSessionSignalR(); await s.Start((uint)SteamGameIds.Arma2Oa, new Uri("http://127.0.0.1:55556")).ConfigureAwait(false); var a2 = "arma2arrowpc"; var a3 = "arma3"; var filter = ServerFilterBuilder.Build().FilterByAppId((uint)SteamGameIds.Arma3).Value; await s.GetServers <ArmaServerInfoModel>( new GetServers { Filter = filter, IncludeDetails = true }, list => { Console.WriteLine(string.Join(",", list.Select(x => x.QueryEndPoint))); }, CancellationToken.None) .ConfigureAwait(false); }
public async Task GetServers() { LoggingSetup.Setup("Tests"); LockedWrapper.callFactory = new SafeCallFactory(); // workaround for accessviolation errors var serverFilterBuilder = ServerFilterBuilder.Build(); serverFilterBuilder.FilterByAddresses(new[] { new IPEndPoint(IPAddress.Parse("5.189.150.147"), 2302), new IPEndPoint(IPAddress.Parse("5.189.136.56"), 2302), new IPEndPoint(IPAddress.Parse("80.241.208.192"), 2302) }); var s = await SteamActions.PerformArmaSteamAction( steamApi => PerformAction(steamApi, serverFilterBuilder.GetServerFilterWrap()), (uint)SteamGameIds.Arma3, new SteamSession.SteamSessionFactory()).ConfigureAwait(false); s.Count.Should().Be(3); var json = s.ToJson(true); Console.WriteLine(json); @"C:\temp\crawl\arma-servers.json".ToAbsoluteFilePath().WriteText(json); }
public ArmaServer(ArmaServerInfo info, ServerInfoRulesFetcher fetcher) { Info = info; _fetcher = fetcher; _filter = ServerFilterBuilder.Build().FilterByAddress(info.ConnectionEndPoint).GetServerFilterWrap(); }