Exemple #1
0
        public override void SendData()
        {
            logger.Debug($"Updating node measures");
            List <Task> updateTasks = new List <Task>();

            foreach (String nodeName in Session.ManagedNodes.Nodes.Keys.ToList())
            {
                BlockchainNode node = Session.ManagedNodes.Nodes[nodeName];
                updateTasks.AddRange(UpdateNodeData(node));
                node.NodeState.Initialized = true;
            }

            Task.WaitAll(updateTasks.ToArray());
            LastUpdateTimestamp = DateTime.Now;
            UpdateCount++;

            BlockchainNodeState[] nodesStatistics = (from n in Session.ManagedNodes.Nodes
                                                     select n.Value.NodeState).ToArray();

            BlockchainNodeStateMessage blockchainNodeStateMessage = new BlockchainNodeStateMessage();

            blockchainNodeStateMessage.NodesStatistics = nodesStatistics;

            UpdateEventArgs args = new UpdateEventArgs()
            {
                MessageType   = MessageType.NodeStatistics,
                Scope         = ResourceScope.Global,
                CorrelationId = blockchainNodeStateMessage.CorrelationId,
                Data          = blockchainNodeStateMessage
            };

            OnUpdate(this, args);
        }
        public override void OpenEnvelope()
        {
            try
            {
                BlockchainNodeStateMessage = Message.GetPayload <BlockchainNodeStateMessage>();
            }
            catch (Exception ex)
            {
                logger.Error(ex, $"Cannot deserialize Client Registration message from agent {Agent.Address}");
                return;
            }

            logger.Info($"Received node data from agent {Agent.Address}");
        }