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