private void InvokeBackofficeCallback(EthereumTransfer transfer, CancellationToken cancellationToken)
        {
            TransferResult transferResult = null;

            do
            {
                try
                {
                    var backofficeRequest = _backofficeTransferHelper.CreateBackofficeTransferRequest(transfer, _options.ConfirmationsRequired);

                    transferResult = TransferCallback.Invoke(backofficeRequest);

                    if (transferResult.HasException)
                    {
                        throw transferResult.Exception;
                    }

                    LogInfo("Withdrawal transfer {@TransferId} with assetId = {@AssetId} and amountEth = {@Amount} to {@ToAddress} failed to be sent",
                            backofficeRequest.TransferId,
                            backofficeRequest.AssetId, backofficeRequest.Amount, backofficeRequest.TargetAccount);
                }
                catch (Exception ex)
                {
                    LogError(ex, "TransferCallback.Invoke failed");
                }
            } while (transferResult == null && !cancellationToken.WaitHandle.WaitOne(InvokeTransferCallbackRetryIntervalMs));
        }
예제 #2
0
        private T readStream <T>(long contentLengh, Stream stream, Encoding encoding, TransferCallback downloadProgress)
        {
            long transferd = 0;

            var buffer = new byte[contentLengh];//10kb

            while (stream.Read(buffer, (int)transferd, TranferCallbackSize) > TranferCallbackSize)
            {
                transferd += TranferCallbackSize;

                downloadProgress?.Invoke(contentLengh, transferd);
            }

            downloadProgress?.Invoke(contentLengh, contentLengh);

            return(JsonSerializer.Instance.Deserialize <T>(buffer, encoding));
        }