private async Task PushTransactions(IClientProxy clientsCaller, SubscribeModel subscribeModel, BlockRpcEntity model, BlockOperations operations) { foreach (var transaction in operations.Transactions) { var content = transaction.contents.Where(c => c.kind == TezosBlockOperationConstants.Transaction && c.metadata.operation_result.status == TezosBlockOperationConstants.OperationResultStatusApplied).ToList(); foreach (var transactionContent in content) { // Babylon upgrade - KT1 transactions are smart contract operations var txSource = transactionContent.GetTransactionSource(); var txDestination = transactionContent.GetTransactionDestination(); var txContent = transactionContent.GetInternalTransactionContent(); if (subscribeModel.TransactionAddresses.Contains("all") || subscribeModel.TransactionAddresses.Contains(txSource) || subscribeModel.TransactionAddresses.Contains(txDestination)) { var message = new PushMessage(new TransactionModel(model, transaction, txContent)); await clientsCaller.SendAsync("transactions", message); _log.LogDebug($"History Block {model.header.level} | " + $"Operation hash {transaction.hash} has been sent. TxSource={txSource}, TxDestination={txDestination}"); } } } }
private async Task PushTransactions(BlockRpcEntity model, BlockOperations operations) { foreach (var transaction in operations.Transactions) { var content = transaction.contents.Where(c => c.kind == TezosBlockOperationConstants.Transaction && c.metadata.operation_result.status == TezosBlockOperationConstants.OperationResultStatusApplied).ToList(); foreach (var transactionContent in content) { // Babylon upgrade - KT1 transactions are smart contract operations var txSource = transactionContent.GetTransactionSource(); var txDestination = transactionContent.GetTransactionDestination(); var txContent = transactionContent.GetInternalTransactionContent(); var message = new PushMessage(new TransactionModel(model, transaction, txContent)); await _hubContext.Clients.Groups( $"transactions_{txSource}", $"transactions_{txDestination}", "transactions_all" ) .SendAsync("transactions", message); _log.LogDebug($"Block {model.header.level} | " + $"Operation hash {transaction.hash} has been sent to the following groups [transactions_{transactionContent.source}, transactions_{transactionContent.destination}, transactions_all]"); } } }
private async Task PushOriginations(BlockRpcEntity model, BlockOperations operations) { foreach (var originations in operations.Originations) { var content = originations.contents.Where(c => c.kind == TezosBlockOperationConstants.Origination && c.metadata.operation_result.status == TezosBlockOperationConstants.OperationResultStatusApplied).ToList(); foreach (var originationContent in content) { var message = new PushMessage(new OriginationModel(model, originations, originationContent)); await _hubContext.Clients.Groups( $"originations_{originationContent.source}", "originations_all" ) .SendAsync("originations", message); _log.LogDebug($"Block {model.header.level} | " + $"Operation hash {originations.hash} has been sent to the following groups [originations_{originationContent.source}, originations_all]"); } } }
private async Task PushOriginations(IClientProxy clientsCaller, SubscribeModel subscribeModel, BlockRpcEntity model, BlockOperations operations) { foreach (var originations in operations.Originations) { var content = originations.contents.Where(c => c.kind == TezosBlockOperationConstants.Origination && c.metadata.operation_result.status == TezosBlockOperationConstants.OperationResultStatusApplied).ToList(); foreach (var originationContent in content) { if (subscribeModel.OriginationAddresses.Contains("all") || subscribeModel.OriginationAddresses.Contains(originationContent.source)) { var message = new PushMessage(new OriginationModel(model, originations, originationContent)); await clientsCaller.SendAsync("originations", message); _log.LogDebug($"History block {model.header.level} | " + $"Operation hash {originations.hash} has been sent. OriginationSource={originationContent.source}"); } } } }
private static void PushDelegations(IAsyncCollector <SignalRMessage> signalRMessages, BlockOperations operations, BlockRpcEntity model) { foreach (var delegation in operations.Delegations) { var content = delegation.contents.Where(c => c.kind == TezosBlockOperationConstants.Delegation && c.metadata.operation_result.status == TezosBlockOperationConstants.OperationResultStatusApplied).ToList(); foreach (var delegationContent in content) { signalRMessages.AddAsync(new SignalRMessage { GroupName = $"delegations_{delegationContent.source}", Arguments = new object[] { new PushMessage(new DelegationModel(model, delegation, delegationContent)) }, Target = "delegations" }); signalRMessages.AddAsync(new SignalRMessage { GroupName = $"delegations_{delegationContent.@delegate}", Arguments = new object[] { new PushMessage(new DelegationModel(model, delegation, delegationContent)) }, Target = "delegations" }); signalRMessages.AddAsync(new SignalRMessage { GroupName = "delegations_all", Arguments = new object[] { new PushMessage(new DelegationModel(model, delegation, delegationContent)) }, Target = "delegations" }); } } }
private static void PushTransactions(IAsyncCollector <SignalRMessage> signalRMessages, BlockOperations operations, BlockRpcEntity model) { foreach (var transaction in operations.Transactions) { var content = transaction.contents.Where(c => c.kind == TezosBlockOperationConstants.Transaction && c.metadata.operation_result.status == TezosBlockOperationConstants.OperationResultStatusApplied).ToList(); foreach (var operationContent in content) { var transactionContent = (BlockTransactionContent)operationContent; // Babylon upgrade - KT1 transactions are smart contract operations var txSource = transactionContent.GetTransactionSource(); var txDestination = transactionContent.GetTransactionDestination(); var txContent = transactionContent.GetInternalTransactionContent(); signalRMessages.AddAsync(new SignalRMessage { GroupName = $"transactions_{txSource}", Arguments = new object[] { new PushMessage(new TransactionModel(model, transaction, txContent)) }, Target = "transactions" }); signalRMessages.AddAsync(new SignalRMessage { GroupName = $"transactions_{txDestination}", Arguments = new object[] { new PushMessage(new TransactionModel(model, transaction, txContent)) }, Target = "transactions" }); signalRMessages.AddAsync(new SignalRMessage { GroupName = "transactions_all", Arguments = new object[] { new PushMessage(new TransactionModel(model, transaction, txContent)) }, Target = "transactions" }); } } }