예제 #1
0
        public ExchangeRateUpdater(IJobManager jobManager, IExchangeRateProvider exchangeRateProvider, IContextHolder contextHolder)
        {
            _jobManager           = jobManager;
            _exchangeRateProvider = exchangeRateProvider;
            _contextHolder        = contextHolder;
            LastExecuted          = DateTime.Now.AddSeconds(-RepetitionIntervalInSeconds * 2);

            _jobManager.Add(this);
        }
예제 #2
0
        public void Execute()
        {
            try
            {
                if (!_updatingThroughput)
                {
                    ProcessTransferRequests();

                    LastExecuted = DateTime.Now;
                    _jobManager.Add(this);
                }
            }
            catch (Exception ex)
            {
                //Re-schedule inmediately on error
                _updatingThroughput = false;
                _logger.Error(ex);
                _jobManager.Add(this);
            }
        }
예제 #3
0
        public void Execute()
        {
            try
            {
                _contextHolder.ExchangeRate = _exchangeRateProvider.GetCurrentRate();

                if (null != _contextHolder.ExchangeRate)
                {
                    //Adjust Bid Price to BTP to USD Exchange Rate
                    decimal btpusd = _contextHolder.Config.ExchangeValue;
                    _contextHolder.ExchangeRate.Bid = (_contextHolder.ExchangeRate.Bid / btpusd);//.TruncateDecimalPlaces(8);
                }

                LastExecuted = DateTime.Now;
                _jobManager.Add(this);
            }
            catch (Exception ex)
            {
                //Re-schedule inmediately on error
                _logger.Error(ex);
                _jobManager.Add(this);
            }
        }
예제 #4
0
        internal ServiceResponse <TransferModel> HandleTransfer(TransferModel request)
        {
            Func <TransferModel> func = delegate
            {
                TransferModel response = new TransferModel()
                {
                    FromAddress = request.FromAddress
                };
                try
                {
                    TransferRequest transfer = new TransferRequest()
                    {
                        Amount = 0,
                        ConfirmationProgress = 0,
                        ConfirmationRequired = 0,
                        Created     = DateTime.Now,
                        Updated     = DateTime.Now,
                        FromAddress = request.FromAddress,
                        FromCoin    = CoinType.BTC.ToString(),
                        Status      = (int)TransferStatus.Unknown,
                        ToAddress   = request.ToAddress,
                        ToCoin      = CoinType.BTP.ToString()
                    };

                    _iConnectionFactory.Run(con => _iTransferRequestRepository.Add(con, null, transfer));
                    //https://stackoverflow.com/questions/47487241/rawtx-rawblock-zmq-at-the-same-time
                    _jobManager.Add(new Trigger
                    {
                        StartTime  = DateTime.Now.AddSeconds(25),
                        TaskAction = () =>
                        {
                            _payoutManager.ProcessTransferRequests(new TransferRequest[] { transfer });
                        }
                    });

                    response = GetTransferRequestForSymbol("btcusd").Result;
                }
                catch (Exception ex)
                {
                    response.FromAddressBase64 = string.Empty;
                    _logger.Error(ex);
                }

                return(response);
            };

            return(this.Execute(func));
        }
예제 #5
0
        public PayoutManager(IJobManager jobManager,
                             IContextHolder contextHolder,
                             ITransferRequestRepository iTransferRequestRepository,
                             ITransferRepository iTransferRepository,
                             IConnectionFactory iConnectionFactory,
                             JsonSerializerSettings jsonSerializerSettings,
                             DaemonClientFactory daemonClientFactory,
                             NotificationService notificationService)
        {
            _jobManager    = jobManager;
            _contextHolder = contextHolder;
            _iTransferRequestRepository = iTransferRequestRepository;
            _iTransferRepository        = iTransferRepository;
            _iConnectionFactory         = iConnectionFactory;
            _jsonSerializerSettings     = jsonSerializerSettings;
            _daemonClientFactory        = daemonClientFactory;
            _notificationService        = notificationService;
            _updatingThroughput         = false;
            LastExecuted = DateTime.Now.AddSeconds(-RepetitionIntervalInSeconds * 2);

            _jobManager.Add(this);
        }