Ejemplo n.º 1
0
        public void IsSendable_NoHeader()
        {
            var target = new ClusterMessage();

            target.Header = null;
            target.IsSendable().Should().BeFalse();
        }
Ejemplo n.º 2
0
        public void IsSendable_NoReturnAddress()
        {
            var target = new ClusterMessage();

            target.Header.PayloadType = MessagePayloadType.Object;
            target.PayloadObject      = new object();
            target.IsSendable().Should().BeFalse();
        }
Ejemplo n.º 3
0
        public void IsSendable_CommandStringEmpty()
        {
            var target = new ClusterMessage();

            target.Header.PayloadType = MessagePayloadType.CommandString;
            target.CommandStrings     = new List <string>();

            target.IsSendable().Should().BeFalse();
        }
Ejemplo n.º 4
0
        public void IsSendable_ObjectPayloadNull()
        {
            var target = new ClusterMessage();

            target.Header.PayloadType = MessagePayloadType.Object;
            target.PayloadObject      = null;

            target.IsSendable().Should().BeFalse();
        }
Ejemplo n.º 5
0
        public void IsSendable_RawFramesEmpty()
        {
            var target = new ClusterMessage();

            target.Header.PayloadType = MessagePayloadType.Raw;
            target.RawFrames          = new List <byte[]>();

            target.IsSendable().Should().BeFalse();
        }
Ejemplo n.º 6
0
        public void IsSendable_RawFramesNull()
        {
            var target = new ClusterMessage();

            target.Header.PayloadType = MessagePayloadType.Raw;
            target.RawFrames          = null;

            target.IsSendable().Should().BeFalse();
        }
Ejemplo n.º 7
0
        public void IsSendable_ToZoneNoZone()
        {
            var target = new ClusterMessage();

            target.Header.PayloadType   = MessagePayloadType.Object;
            target.Header.FromNetworkId = "ABC";
            target.Header.FromNodeId    = "123";
            target.PayloadObject        = new object();
            target.Header.ToType        = TargetType.Zone;

            target.IsSendable().Should().BeFalse();
        }
Ejemplo n.º 8
0
        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);
            }
        }
Ejemplo n.º 9
0
        public void IsSendable_Default()
        {
            var target = new ClusterMessage();

            target.IsSendable().Should().BeFalse();
        }