예제 #1
0
        public IActionResult InfuraHeight()
        {
            var bnr = _bsm.GetInfuraBlockNr().TryGetBlockNumber();

            if (bnr <= 0)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }

            return(StatusCode(StatusCodes.Status200OK, bnr));
        }
예제 #2
0
        protected override async Task Process()
        {
            var bn    = _bsm.GetInfuraBlockNr();
            var delay = 100;

            if (bn != null && (DateTime.UtcNow - bn.TimeStamp).TotalSeconds < _cfg.infuraRequestDelay)
            {
                var timeUntilNextExecution = (_cfg.infuraRequestDelay * 1000) - (DateTime.UtcNow - bn.TimeStamp).TotalMilliseconds;
                if (timeUntilNextExecution > delay)
                {
                    delay = (int)timeUntilNextExecution;
                }
            }

            await Task.Delay(delay);

            await _bsm.TryUpdateInfuraBlockHeight();
        }