Example #1
0
 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);
        }
Example #3
0
 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
            });
        }
Example #6
0
 private void OnMoneyWithdrawn(Withdrawn e)
 {
     lastEvent = e;
     accountShardRegion.Tell(new ShardEnvelope <Deposit>(toAccount, new Deposit(PersistenceId, amount)));
     Become(AwaitDeposited);
 }