public async Task <IObservable <ArmaServerInfo> > GetServersInclDetails(CancellationToken ct, ServerFilterWrap filter, bool inclRules) { var obs = PrepareListener(ct, inclRules); await GetServerInfoInclDetails(filter).ConfigureAwait(false); return(obs); }
public static ServerFilterWrap GetServerFilterWrap(this ServerFilterBuilder This) { var f = new ServerFilterWrap(); foreach (var d in This.Value) { f.AddFilter(d.Item1, d.Item2); } return(f); }
private static async Task<IList<ArmaServerInfo>> PerformAction(ISteamApi steamApi, ServerFilterWrap filter) { using (var sb = await SteamActions.CreateServerBrowser(steamApi).ConfigureAwait(false)) { using (var cts = new CancellationTokenSource()) { var obs = await sb.GetServersInclDetails(cts.Token, filter, true) .ConfigureAwait(false); var s = await obs.Take(10).ToList(); cts.Cancel(); return s; } } }
public async Task<IObservable<ArmaServerInfo>> GetServers(CancellationToken ct, ServerFilterWrap filter) { var dsp = new CompositeDisposable(); // Apparently we get null ServerInfo (not even endpoints :S) var obs = ServerResponses .TakeUntil(RefreshComplete) .Select(x => x.ServerInfo == null ? null : ArmaServerInfo.FromWrap(x.ServerIndex, x.ServerInfo)) .Where(x => x != null) .Replay(); dsp.Add(obs.Connect()); obs.Subscribe(_ => { }, x => dsp.Dispose(), dsp.Dispose, ct); ct.Register(dsp.Dispose); await GetServerInfo(filter).ConfigureAwait(false); return obs; }
public async Task <ArmaServerInfo> GetServerInfoInclDetails1(ServerFilterWrap filter, CancellationToken ct) { var obs = ServerResponses .Take(1) .TakeUntil(RefreshComplete.Void() .Merge(ServerFailedToRespond.Void()) .Merge(Observable.Timer(TimeSpan.FromSeconds(5)) .Void())).FirstAsync().ToTask(ct); await GetServerInfoInclDetails(filter).ConfigureAwait(false); var r = await obs; return(ArmaServerInfo.FromWrap(r.ServerIndex, r.ServerInfo)); }
public async Task<IObservable<ArmaServerInfo>> GetServersInclDetails(CancellationToken ct, ServerFilterWrap filter, bool inclRules) { var obs = PrepareListener(ct, inclRules); await GetServerInfoInclDetails(filter).ConfigureAwait(false); return obs; }
public ArmaServer(ArmaServerInfo info, ServerInfoRulesFetcher fetcher) { Info = info; _fetcher = fetcher; _filter = ServerFilterBuilder.Build().FilterByAddress(info.ConnectionEndPoint).GetServerFilterWrap(); }
public static ServerFilterWrap GetServerFilterWrap(this ServerFilterBuilder This) { var f = new ServerFilterWrap(); foreach (var d in This.Value) { f.AddFilter(d.Item1, d.Item2); } return f; }
public async Task<ArmaServerInfo> GetServerInfoInclDetails1(ServerFilterWrap filter, CancellationToken ct) { var obs = ServerResponses .Take(1) .TakeUntil(RefreshComplete.Void() .Merge(ServerFailedToRespond.Void()) .Merge(Observable.Timer(TimeSpan.FromSeconds(5)) .Void())).FirstAsync().ToTask(ct); await GetServerInfoInclDetails(filter).ConfigureAwait(false); var r = await obs; return ArmaServerInfo.FromWrap(r.ServerIndex, r.ServerInfo); }
protected Task GetServerInfoInclDetails(ServerFilterWrap filter) => _api.Do(api => api.RequestInternetServerListWithDetails(filter));
protected Task GetServerInfo(ServerFilterWrap filter) => _api.Do(api => api.RequestInternetServerList(filter));
public async Task <IObservable <ArmaServerInfo> > GetServers(CancellationToken ct, ServerFilterWrap filter) { var dsp = new CompositeDisposable(); // Apparently we get null ServerInfo (not even endpoints :S) var obs = ServerResponses .TakeUntil(RefreshComplete) .Select(x => x.ServerInfo == null ? null : ArmaServerInfo.FromWrap(x.ServerIndex, x.ServerInfo)) .Where(x => x != null) .Replay(); dsp.Add(obs.Connect()); obs.Subscribe(_ => { }, x => dsp.Dispose(), dsp.Dispose, ct); ct.Register(dsp.Dispose); await GetServerInfo(filter).ConfigureAwait(false); return(obs); }
private static async Task <IList <ArmaServerInfo> > PerformAction(ISteamApi steamApi, ServerFilterWrap filter) { using (var sb = await SteamActions.CreateServerBrowser(steamApi).ConfigureAwait(false)) { using (var cts = new CancellationTokenSource()) { var obs = await sb.GetServersInclDetails(cts.Token, filter, true) .ConfigureAwait(false); var s = await obs.Take(10).ToList(); cts.Cancel(); return(s); } } }