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)); }
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)); }