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> > 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 ArmaServer(ArmaServerInfo info, ServerInfoRulesFetcher fetcher) { Info = info; _fetcher = fetcher; _filter = ServerFilterBuilder.Build().FilterByAddress(info.ConnectionEndPoint).GetServerFilterWrap(); }
private async Task <ArmaServer> ToServerInfo(ServerRespondedEventArgs x) { var info = ArmaServerInfo.FromWrap(x.ServerIndex, x.ServerInfo); return(new ArmaServer(info, await _fetcherFact(info.QueryEndPoint).ConfigureAwait(false))); }
public ArmaServer(ArmaServerInfo info, ServerInfoRulesFetcher fetcher) { Info = info; _fetcher = fetcher; _filter = ServerFilterBuilder.Build().FilterByAddress(info.ConnectionEndPoint).GetServerFilterWrap(); }