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); }
private IObservable <ArmaServer> BuildListener(CompositeDisposable dsp) => ServerResponses .TakeUntil(RefreshComplete) .Where(x => x.ServerInfo != null) .SelectMany(ToServerInfo) .Do(dsp.Add);
/// <summary> /// Инициализируем компоненты /// </summary> void Init() { _connection = GetComponent<Connection>(); _serverRequests = GetComponent<ServerRequests>(); _serverResponses = GetComponent<ServerResponses>(); Load(); }
public void Clear() { Response = ServerResponses.None; Fields.Clear(); FieldInfo.Harvest(); }