Exemplo n.º 1
0
        protected override void Receive(SignallingMessage signallingMessage)
        {
            switch (signallingMessage.DestinationControlPlaneElement)
            {
            case ControlPlaneElementType.CC:
                _connectionController.ReceiveMessage(signallingMessage);
                break;

            case ControlPlaneElementType.LRM:
                _linkResourceManager.ReceiveMessage(signallingMessage);
                break;
            }
        }
        public void TestLRM()
        {
            var subnetwork1Address = new NetworkAddress("1");

            var client1Address = new NetworkAddress("1.1.1");
            var client2Address = new NetworkAddress("1.2.1");

            var node1Address = new NetworkAddress("1.1");
            var node2Address = new NetworkAddress("1.2");

            var node1Client1SnppOut = new SubnetworkPointPool(client1Address.Append(1));
            var node1Client1SnppIn  = new SubnetworkPointPool(node1Address.Append(1));
            var node1Node2SnppOut   = new SubnetworkPointPool(node2Address.Append(2));
            var node1Node2SnppIn    = new SubnetworkPointPool(node1Address.Append(2));
            var node2Client2SnppOut = new SubnetworkPointPool(client2Address.Append(1));
            var node2Client2SnppIn  = new SubnetworkPointPool(node2Address.Append(1));

            var client1Node1Link = new Link(node1Client1SnppIn, node1Client1SnppOut, 10, true);
            var node1Node2Link   = new Link(node1Node2SnppIn, node1Node2SnppOut, 10, false);
            var client2Node2Link = new Link(node2Client2SnppIn, node2Client2SnppOut, 10, true);

            var rcAddress = subnetwork1Address;
            var rc        = new RoutingController(rcAddress);

            _controlPlaneElements.Add(new Row(rcAddress, ControlPlaneElementType.RC), rc);

            var ccAddress = subnetwork1Address;
            var cc        = new ConnectionController(ccAddress);

            _controlPlaneElements.Add(new Row(ccAddress, ControlPlaneElementType.CC), cc);

            var cc1Address = node1Address;
            var cc1        = new ConnectionController(cc1Address);

            _controlPlaneElements.Add(new Row(cc1Address, ControlPlaneElementType.CC), cc1);

            var cc2Address = node2Address;
            var cc2        = new ConnectionController(cc2Address);

            _controlPlaneElements.Add(new Row(cc2Address, ControlPlaneElementType.CC), cc2);

            var lrm1Address = node1Address;
            var lrm1        = new LinkResourceManager(lrm1Address);

            _controlPlaneElements.Add(new Row(lrm1Address, ControlPlaneElementType.LRM), lrm1);

            var lrm2Address = node2Address;
            var lrm2        = new LinkResourceManager(lrm2Address);

            _controlPlaneElements.Add(new Row(lrm2Address, ControlPlaneElementType.LRM), lrm2);


            rc.MessageToSend   += PassMessage;
            cc.MessageToSend   += PassMessage;
            cc1.MessageToSend  += PassMessage;
            cc2.MessageToSend  += PassMessage;
            lrm1.MessageToSend += PassMessage;
            lrm2.MessageToSend += PassMessage;

            rc.UpdateState   += UpdateState;
            cc.UpdateState   += UpdateState;
            cc1.UpdateState  += UpdateState;
            cc2.UpdateState  += UpdateState;
            lrm1.UpdateState += UpdateState;
            lrm2.UpdateState += UpdateState;

            lrm1.ReceiveMessage(new SignallingMessage {
                Operation                      = OperationType.Configuration,
                Payload                        = client1Node1Link,
                DestinationAddress             = node1Address,
                DestinationControlPlaneElement = ControlPlaneElementType.LRM
            });

            lrm1.ReceiveMessage(new SignallingMessage {
                Operation                      = OperationType.Configuration,
                Payload                        = client1Node1Link.Reverse(),
                DestinationAddress             = node1Address,
                DestinationControlPlaneElement = ControlPlaneElementType.LRM
            });

            lrm1.ReceiveMessage(new SignallingMessage {
                Operation                      = OperationType.Configuration,
                Payload                        = node1Node2Link,
                DestinationAddress             = node1Address,
                DestinationControlPlaneElement = ControlPlaneElementType.LRM
            });

            lrm1.ReceiveMessage(new SignallingMessage {
                Operation                      = OperationType.Configuration,
                Payload                        = node1Node2Link.Reverse(),
                DestinationAddress             = node1Address,
                DestinationControlPlaneElement = ControlPlaneElementType.LRM
            });

            lrm2.ReceiveMessage(new SignallingMessage {
                Operation                      = OperationType.Configuration,
                Payload                        = node1Node2Link,
                DestinationAddress             = node2Address,
                DestinationControlPlaneElement = ControlPlaneElementType.LRM
            });

            lrm2.ReceiveMessage(new SignallingMessage {
                Operation                      = OperationType.Configuration,
                Payload                        = node1Node2Link.Reverse(),
                DestinationAddress             = node2Address,
                DestinationControlPlaneElement = ControlPlaneElementType.LRM
            });

            lrm2.ReceiveMessage(new SignallingMessage {
                Operation                      = OperationType.Configuration,
                Payload                        = client2Node2Link,
                DestinationAddress             = node2Address,
                DestinationControlPlaneElement = ControlPlaneElementType.LRM
            });

            lrm2.ReceiveMessage(new SignallingMessage {
                Operation                      = OperationType.Configuration,
                Payload                        = client2Node2Link.Reverse(),
                DestinationAddress             = node2Address,
                DestinationControlPlaneElement = ControlPlaneElementType.LRM
            });

            cc.ReceiveMessage(new SignallingMessage {
                DemandedCapacity               = 5,
                DestinationAddress             = ccAddress,
                DestinationControlPlaneElement = ControlPlaneElementType.CC,
                DestinationClientAddress       = client2Address,
                Operation = OperationType.ConnectionRequest,
                Payload   = new[] {
                    node1Client1SnppIn,
                    node1Node2SnppOut
                },
                SourceAddress             = subnetwork1Address,
                SourceClientAddress       = client1Address,
                SourceControlPlaneElement = ControlPlaneElementType.CC
            });
        }