public void FillInNetworkNodeId_Test() { var target = new ClusterMessage(); target.Header.PayloadType = MessagePayloadType.Object; target.PayloadObject = new NodeStatus(); target.FillInNetworkNodeId("ABC"); var ns = (NodeStatus)target.PayloadObject; ns.NetworkNodeId.Should().Be("ABC"); }
public void Send(ClusterMessage envelope) { envelope.Header.FromNetworkId = _uuid.ToString(); envelope.Header.FromNodeId = _core.NodeId; if (envelope.Header.FromType == TargetType.Node) { envelope.Header.FromEntityId = _core.NodeId; } if (!envelope.IsSendable()) { return; } envelope.FillInNetworkNodeId(envelope.Header.FromNetworkId); var message = _mapper.Map(envelope); // If we have a proxy node ID, send the message there and let the proxy sort out // further actions. // Otherwise a zone type becomes a Shout and a Node type becomes a Whisper if (!string.IsNullOrEmpty(envelope.Header.ProxyNodeNetworkId)) { Guid uuid; bool ok = Guid.TryParse(envelope.Header.ProxyNodeNetworkId, out uuid); if (ok) { _zyre.Whisper(uuid, message); } } else if (envelope.Header.ToType == TargetType.Cluster) { _zyre.Shout(Zones.ZoneAll, message); } else if (envelope.Header.ToType == TargetType.Zone) { _zyre.Shout(envelope.Header.ZoneName, message); } else if (envelope.Header.ToType == TargetType.Node) { _zyre.Whisper(envelope.Header.GetToNetworkUuid(), message); } }