Пример #1
0
        public async Task <IObservable <ArmaServerInfo> > GetServersInclDetails(CancellationToken ct,
                                                                                ServerFilterWrap filter, bool inclRules)
        {
            var obs = PrepareListener(ct, inclRules);

            await GetServerInfoInclDetails(filter).ConfigureAwait(false);

            return(obs);
        }
Пример #2
0
        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);
        }
Пример #3
0
 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;
         }
     }
 }
Пример #4
0
 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;
 }
Пример #5
0
        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));
        }
Пример #6
0
 public async Task<IObservable<ArmaServerInfo>> GetServersInclDetails(CancellationToken ct,
     ServerFilterWrap filter, bool inclRules) {
     var obs = PrepareListener(ct, inclRules);
     await GetServerInfoInclDetails(filter).ConfigureAwait(false);
     return obs;
 }
Пример #7
0
 public ArmaServer(ArmaServerInfo info, ServerInfoRulesFetcher fetcher) {
     Info = info;
     _fetcher = fetcher;
     _filter = ServerFilterBuilder.Build().FilterByAddress(info.ConnectionEndPoint).GetServerFilterWrap();
 }
Пример #8
0
        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;
        }
Пример #9
0
 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);
 }
Пример #10
0
 protected Task GetServerInfoInclDetails(ServerFilterWrap filter)
     => _api.Do(api => api.RequestInternetServerListWithDetails(filter));
Пример #11
0
 protected Task GetServerInfo(ServerFilterWrap filter) => _api.Do(api => api.RequestInternetServerList(filter));
Пример #12
0
        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);
        }
Пример #13
0
 public ArmaServer(ArmaServerInfo info, ServerInfoRulesFetcher fetcher)
 {
     Info     = info;
     _fetcher = fetcher;
     _filter  = ServerFilterBuilder.Build().FilterByAddress(info.ConnectionEndPoint).GetServerFilterWrap();
 }
Пример #14
0
 protected Task GetServerInfoInclDetails(ServerFilterWrap filter)
 => _api.Do(api => api.RequestInternetServerListWithDetails(filter));
Пример #15
0
 protected Task GetServerInfo(ServerFilterWrap filter) => _api.Do(api => api.RequestInternetServerList(filter));
Пример #16
0
        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);
                }
            }
        }