Esempio n. 1
0
        public static async Task <RpcStatus> GetRpcStatusAsync(this RPCClient rpc, CancellationToken cancel)
        {
            try
            {
                var bci = await rpc.GetBlockchainInfoAsync().ConfigureAwait(false);

                cancel.ThrowIfCancellationRequested();
                var pi = await rpc.GetPeersInfoAsync().ConfigureAwait(false);

                return(RpcStatus.Responsive(bci.Headers, bci.Blocks, pi.Length));
            }
            catch (Exception ex) when(!(ex is OperationCanceledException || ex is TaskCanceledException || ex is TimeoutException))
            {
                Logger.LogTrace(ex);
                return(RpcStatus.Unresponsive);
            }
        }