예제 #1
0
        public override bool ProcessMessage(INyxMessage msg)
        {
            if (_hub == null)
            {
                return(true);
            }
            switch (msg.Action)
            {
            case Register:
                _logger.Info("Registered node {0}", StringExtensions.Trimmer(msg.Source));
                _hub.BroadcastMessage(new NyxMessage
                {
                    Target = msg.Source,
                    Action = Callback,
                    Source = NyxId
                }.Set("event", "registered")
                                      );
                break;

            case Ping:
                _logger.Info("Node {0} pinged.", StringExtensions.Trimmer(msg.Source));
                msg.Reply(Pong).BroadcastMessage(_hub);
                break;

            default:
                return(false);
            }
            return(true);
        }
예제 #2
0
        /// <summary>
        ///     Send the info to the requester <see cref="INyxBorg" />.
        /// </summary>
        /// <param name="sourceMessage">Source message</param>
        /// <param name="target">Target for receiveing the updates</param>
        /// <param name="added">Nodes added.</param>
        /// <param name="removed">Nodes removed.</param>
        private void SendNodesInfo([CanBeNull] INyxMessage sourceMessage, [CanBeNull] string target,
                                   [NotNull] IEnumerable <NodeInfo> added, [NotNull] IEnumerable <NodeInfo> removed, bool cleanup = false)
        {
            _logger.Debug("Pushing node updates to {0}", target);
            var msg = string.IsNullOrWhiteSpace(target)
                ? sourceMessage.Reply(NodesInfoReport)
                : new NyxMessage(target, NodesInfoReport, "Nyx");

            msg.Set(NodeManagerAdded, added.ToArray());
            msg.Set(NodeManagerRemoved, removed.ToArray());
            msg.Set(NodeManagerCleanup, cleanup);
            _hub.BroadcastMessage(msg);
        }
예제 #3
0
 /// <summary>
 ///     Shorthand for the broadcast method of the hub.
 /// </summary>
 /// <param name="msg">Message to broadcast</param>
 /// <param name="hub">Hub from where the message is sent.</param>
 public static void BroadcastMessage(this INyxMessage msg, INyxHub hub)
 {
     hub.BroadcastMessage(msg);
 }