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); }
/// <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); }