private void OnTransferStarted(TransferStarted e) { lastEvent = e; amount = e.Amount; toAccount = e.ToAccountNr; replyTo.Tell(new Withdraw(PersistenceId, amount)); Become(AwaitWithdrawn); }
public async Task <ITransferEvent> RegisterAsync(ITransferEvent src) { var newEntity = TransferEventEntity.ByClientId.Create(src); var inserted = await _tableStorage.InsertAndGenerateRowKeyAsDateTimeAsync(newEntity, newEntity.DateTime, RowKeyDateTimeFormat.Short); var byMultisigEntity = TransferEventEntity.ByMultisig.Create(src, inserted.RowKey); await _tableStorage.InsertAsync(byMultisigEntity); return(newEntity); }
public static HistoryEntry MapFrom(ITransferEvent source) { return(new HistoryEntry { Id = source.Id, ClientId = source.ClientId, DateTime = source.DateTime, Amount = source.Amount, Currency = source.AssetId, OpType = "TransferEvent", CustomData = JsonConvert.SerializeObject(source), FeeSize = source.FeeSize, FeeType = source.FeeType.ToString() }); }
public static TransferEventEntity Create(ITransferEvent src) { return(new TransferEventEntity { PartitionKey = GeneratePartitionKey(src.ClientId), DateTime = src.DateTime, Amount = src.Amount, AssetId = src.AssetId, FromId = src.FromId, BlockChainHash = src.BlockChainHash, TransactionId = src.TransactionId, IsHidden = src.IsHidden, AddressFrom = src.AddressFrom, AddressTo = src.AddressTo, Multisig = src.Multisig, ClientId = src.ClientId, IsSettled = src.IsSettled, State = src.State }); }
/// <summary> /// Copies the content of one directory to another on the server side. /// Avoids having to download all items and reupload them to somewhere else on the client side. /// </summary> /// <param name="sourceDirectoryPath">The path to the directory containing the files to be transferred</param> /// <param name="destinationDirectoryPath">The path to the destination directory </param> /// <param name="transferEvent">Action callback for tracking progress of each file when transferring.</param> /// <returns>Result from the server side transfer.</returns> public async Task <ITransferResult> CopyDirectory(string sourceDirectoryPath, string destinationDirectoryPath, Action <Core.TransferEventType, ITransferEvent> transferEvent = null) { var sourceContainerName = GetContainerFromPath(sourceDirectoryPath); var destinationContainerName = GetContainerFromPath(destinationDirectoryPath); // Ensure destination folder exists if we've configured to create automatically. if (CreateFolderIfNotExists) { GetContainer(destinationContainerName, true); } var directoryTransferContext = new DirectoryTransferContext(); // Subscribe to the transfer events if an action method was passed. if (transferEvent != null) { directoryTransferContext.FileTransferred += (fileTransferSender, fileTransferredEventArgs) => { ITransferEvent i = (TransferEvent)fileTransferredEventArgs; transferEvent(Core.TransferEventType.Transferred, i); }; directoryTransferContext.FileFailed += (fileFailedSender, fileTransferredEventArgs) => { ITransferEvent i = (TransferEvent)fileTransferredEventArgs; transferEvent(Core.TransferEventType.Failed, i); }; directoryTransferContext.FileSkipped += (fileSkippedSender, fileTransferredEventArgs) => { ITransferEvent i = (TransferEvent)fileTransferredEventArgs; transferEvent(Core.TransferEventType.Skipped, i); }; } directoryTransferContext.ShouldOverwriteCallbackAsync = (source, destination) => Task.FromResult(true); var copyOptions = new CopyDirectoryOptions { BlobType = BlobType.AppendBlob, Recursive = true }; var sourceContainer = CloudBlobClient.GetContainerReference(sourceContainerName); var sourceRelativeUrl = GetPathWithoutContainer(sourceDirectoryPath); var sourceDirectory = sourceContainer.GetDirectoryReference(sourceRelativeUrl); var destinationContainer = CloudBlobClient.GetContainerReference(destinationContainerName); var destinationRelativeUrl = GetPathWithoutContainer(destinationDirectoryPath); var destinationDirectory = destinationContainer.GetDirectoryReference(destinationRelativeUrl); var transferTask = TransferManager.CopyDirectoryAsync(sourceDirectory, destinationDirectory, CopyMethod.ServiceSideSyncCopy, copyOptions, directoryTransferContext); var result = await transferTask; // Output the result from the transfer. return(new TransferResult { BytesTransferred = result.BytesTransferred, NumberOfFilesFailed = result.NumberOfFilesFailed, NumberOfFilesSkipped = result.NumberOfFilesSkipped, NumberOfFilesTransferred = result.NumberOfFilesTransferred }); }
private void OnMoneyWithdrawn(Withdrawn e) { lastEvent = e; accountShardRegion.Tell(new ShardEnvelope <Deposit>(toAccount, new Deposit(PersistenceId, amount))); Become(AwaitDeposited); }