コード例 #1
0
    public async Task <RoundStateResponse> GetStatusAsync(RoundStateRequest request, CancellationToken cancellationToken)
    {
        var response = await Arena.GetStatusAsync(request, cancellationToken);

        var averages = CoinJoinFeeRateStatStore.GetDefaultAverages();

        return(new RoundStateResponse(response.RoundStates, averages));
    }
コード例 #2
0
    public async Task <RoundStateResponse> GetStatusAsync(RoundStateRequest request, CancellationToken cancellationToken)
    {
        using (await AsyncLock.LockAsync(cancellationToken).ConfigureAwait(false))
        {
            var roundStates = Rounds.Select(x =>
            {
                var checkPoint = request.RoundCheckpoints.FirstOrDefault(y => y.RoundId == x.Id);
                return(RoundState.FromRound(x, checkPoint == default ? 0 : checkPoint.StateId));
            }).ToArray();

            return(new RoundStateResponse(roundStates, Array.Empty <CoinJoinFeeRateMedian>()));
        }
    }
コード例 #3
0
    public Task <RoundStateResponse> GetStatusAsync(RoundStateRequest request, CancellationToken cancellationToken)
    {
        var requestCheckPointDictionary = request.RoundCheckpoints.ToDictionary(r => r.RoundId, r => r);
        var responseRoundStates         = RoundStates.Select(x =>
        {
            if (requestCheckPointDictionary.TryGetValue(x.Id, out RoundStateCheckpoint? checkPoint) && checkPoint.StateId > 0)
            {
                return(x.GetSubState(checkPoint.StateId));
            }

            return(x);
        }).ToArray();

        return(Task.FromResult(new RoundStateResponse(responseRoundStates, Array.Empty <CoinJoinFeeRateMedian>())));
    }
コード例 #4
0
 public Task <RoundStateResponse> GetStatusAsync(RoundStateRequest request, CancellationToken cancellationToken) =>
 SendAndReceiveAsync <RoundStateRequest, RoundStateResponse>(RemoteAction.GetStatus, request, cancellationToken);