Esempio n. 1
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));
        }
Esempio n. 2
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);
        }
Esempio n. 3
0
 private IObservable <ArmaServer> BuildListener(CompositeDisposable dsp) => ServerResponses
 .TakeUntil(RefreshComplete)
 .Where(x => x.ServerInfo != null)
 .SelectMany(ToServerInfo)
 .Do(dsp.Add);
Esempio n. 4
0
    /// <summary>
    /// Инициализируем компоненты
    /// </summary>
    void Init()
    {
        _connection = GetComponent<Connection>();
        _serverRequests = GetComponent<ServerRequests>();
        _serverResponses = GetComponent<ServerResponses>();

        Load();
    }
Esempio n. 5
0
 public void Clear()
 {
     Response = ServerResponses.None;
     Fields.Clear();
     FieldInfo.Harvest();
 }