private void HandleSnpLinkConnectionAllocation(SignallingMessage message) { var snpps = (SubnetworkPointPool[])message.Payload; OnUpdateState($"[RECEIVED_SNPP] {snpps[0]}---{snpps[1]}"); if (_clientOutSnpps.ContainsKey(message.DestinationClientAddress)) { OnUpdateState("[DESTINATION_CLIENT_LOCATED]"); var snppOut = snpps[1]; var linkOut = FindLinkByBegin(snppOut); var snpOut = GenerateSnp(linkOut, message.DemandedCapacity); var pairOut = new SubnetworkPointPortPair(snpOut, snppOut.Id); _recentSnpPortPairs.Add(message.SessionId, pairOut); message.Payload = pairOut; SendSnpLinkConnectionAllocation(message); } else { SendSnpNegotiation(message); } }
private void SendDirectoryAddressRequestResponse(SignallingMessage message) { var clientNames = (string[])message.Payload; NetworkAddress[] clientAddresses = null; try { var clientAddressA = _clientAddressDictionary[clientNames[0]]; var clientAddressZ = _clientAddressDictionary[clientNames[1]]; clientAddresses = new[] { clientAddressA, clientAddressZ }; OnUpdateState($"[FOUND] {clientNames[1]}"); } catch (KeyNotFoundException) { OnUpdateState($"[NOT_FOUND] {clientNames[1]}"); } var directioryResponse = message; directioryResponse.Operation = OperationType.DirectoryAddressRequest; directioryResponse.Payload = clientAddresses; directioryResponse.DestinationAddress = message.SourceAddress; directioryResponse.DestinationControlPlaneElement = ControlPlaneElementType.NCC; SendMessage(directioryResponse); EndSession(message.SessionId); }
private void SendDirectorySnppRequestResponse(SignallingMessage message) { var clientNames = (string[])message.Payload; SubnetworkPointPool[] snpp = null; try { var snmpA = _snppDictionary[clientNames[0]]; var snmpZ = _snppDictionary[clientNames[1]]; snpp = new[] { snmpA, snmpZ }; OnUpdateState($"[FOUND] {clientNames[1]}"); } catch (KeyNotFoundException e) { OnUpdateState($"[NOT_FOUND] {clientNames[1]}"); } var directioryResponse = message; directioryResponse.Operation = OperationType.DirectorySnppRequest; directioryResponse.Payload = snpp; directioryResponse.DestinationAddress = message.SourceAddress; directioryResponse.DestinationControlPlaneElement = ControlPlaneElementType.NCC; SendMessage(directioryResponse); EndSession(message.SessionId); }
private void SendCallTeardownResponse(SignallingMessage message) { message.Operation = OperationType.CallTeardownResponse; message.DestinationAddress = message.SourceAddress; message.DestinationControlPlaneElement = ControlPlaneElementType.NCC; SendMessage(message); }
private void HandleConnectionRequestFromCC(SignallingMessage message) { if (message.Payload == null) { SendConnectionRequestResponse(message, null); } else { if (message.Payload is SubnetworkPoint) { ProcessNextSnppPair(message); } else if (message.Payload is SubnetworkPointPool[]) { var snpps = (SubnetworkPointPool[])message.Payload; if (snpps[0].NodeAddress.Equals(LocalAddress)) { SendLinkConnectionRequest(message); } else { SendRouteTableQuery(message); } } } }
public override void ReceiveMessage(SignallingMessage message) { base.ReceiveMessage(message); switch (message.Operation) { case OperationType.ConnectionRequest: if (message.SourceControlPlaneElement.Equals(ControlPlaneElementType.NCC)) { HandleConnectionRequestFromNCC(message); } else if (message.SourceControlPlaneElement.Equals(ControlPlaneElementType.CC)) { HandleConnectionRequestFromCC(message); } break; case OperationType.PeerCoordination: HandlePeerCoordination(message); break; case OperationType.RouteTableQuery: HandleRouteTableQuery(message); break; case OperationType.LinkConnectionAllocation: HandleLinkConnectionAllocation(message); break; } }
private void HandleSnpNegotiationResponse(SignallingMessage message) { var payload = (object[])message.Payload; var snpps = (SubnetworkPointPool[])payload[0]; var nextPairOut = (SubnetworkPointPortPair)payload[1]; var pairOut = new SubnetworkPointPortPair(nextPairOut.SubnetworkPoint, snpps[0].Id); if (_clientInSnpps.ContainsKey(message.SourceClientAddress)) { OnUpdateState("[SOURCE_CLIENT_LOCATED]"); var snppIn = _clientInSnpps[message.SourceClientAddress]; var linkIn = FindLinkByEnd(snppIn); var snpIn = GenerateSnp(linkIn, message.DemandedCapacity); var pairIn = new SubnetworkPointPortPair(snpIn, snppIn.Id); InsertRow(new [] { pairIn, pairOut }); message.Payload = pairIn; } else { _recentSnpPortPairs.Add(message.SessionId, pairOut); message.Payload = pairOut; } SendSnpLinkConnectionAllocation(message); }
private void HandlePolicyRequest(SignallingMessage message) { if ((bool)message.Payload) { SendDirectorySnppRequest(message); } }
private void SendSnpLinkConnectionAllocation(SignallingMessage message) { message.DestinationAddress = LocalAddress; message.DestinationControlPlaneElement = ControlPlaneElementType.CC; message.Operation = OperationType.LinkConnectionAllocation; SendMessage(message); }
private void HandleDirectoryNameRequest(SignallingMessage message) { var clientName = (string[])message.Payload; _nameDictionary.Add(message.SessionId, clientName); SendCallAccept(message); }
private void HandleCallRequest(SignallingMessage message) { var clientNames = (string[])message.Payload; _nameDictionary.Add(message.SessionId, clientNames); SendPolicyRequest(message); }
private void HandleCallCoordination(SignallingMessage message) { var networkAddress = (NetworkAddress[])message.Payload; _networkAddressDictionary.Add(message.SessionId, networkAddress); SendDirectoryNameRequest(message); }
protected void SendMessage(SignallingMessage message) { message.SourceAddress = LocalAddress; message.SourceControlPlaneElement = ControlPlaneElementType; OnUpdateState("[OUT] " + message); MessageToSend?.Invoke(this, message); }
private void HandleDirectorySnppRequest(SignallingMessage message) { var snpp = (SubnetworkPointPool[])message.Payload; _snppDictionary.Add(message.SessionId, snpp); SendDirectoryAddressRequest(message); }
private void HandleNetworkTopology(SignallingMessage message) { var link = (Link)message.Payload; if (UpdateLinkList(link)) { OnUpdateState($"[TOPOLOGY_UPDATE] {link}"); } }
private void SendSnpNegotiationResponse(SignallingMessage message, SubnetworkPointPortPair subnetworkPointPortPair) { message.Payload = new object[] { (SubnetworkPointPool[])message.Payload, subnetworkPointPortPair }; message.DestinationAddress = message.SourceAddress; message.DestinationControlPlaneElement = ControlPlaneElementType.LRM; SendMessage(message); }
private void SendLocalTopology(SignallingMessage message) { message.Operation = OperationType.LocalTopology; message.DestinationAddress = LocalAddress.GetParentsAddress(); message.DestinationControlPlaneElement = ControlPlaneElementType.RC; SendMessage(message); EndSession(message.SessionId); }
private void SendPolicyRequest(SignallingMessage message) { var policyRequest = message; policyRequest.Operation = OperationType.PolicyRequest; policyRequest.DestinationAddress = NameServer.Address; policyRequest.DestinationControlPlaneElement = ControlPlaneElementType.Policy; SendMessage(policyRequest); }
private void SendPeerCoordination(SignallingMessage message) { var peerCoordination = message; peerCoordination.Operation = OperationType.PeerCoordination; peerCoordination.DestinationAddress = OtherDomainAddress(); peerCoordination.DestinationControlPlaneElement = ControlPlaneElementType.CC; SendMessage(peerCoordination); }
private void SendNetworkTopology(SignallingMessage message) { message.Operation = OperationType.NetworkTopology; message.DestinationAddress = GetOtherDomainAddress(LocalAddress); message.DestinationControlPlaneElement = ControlPlaneElementType.RC; SendMessage(message); EndSession(message.SessionId); }
private void SendLinkConnectionRequest(SignallingMessage message) { var linkConnectionRequest = message; linkConnectionRequest.Operation = OperationType.LinkConnectionAllocation; linkConnectionRequest.DestinationAddress = LocalAddress; linkConnectionRequest.DestinationControlPlaneElement = ControlPlaneElementType.LRM; SendMessage(linkConnectionRequest); }
private void SendRouteTableQueryResponse(SignallingMessage message) { message.Operation = OperationType.RouteTableQuery; message.DestinationAddress = message.SourceAddress; message.DestinationControlPlaneElement = ControlPlaneElementType.CC; SendMessage(message); EndSession(message.SessionId); }
private void SendSnpNegotiation(SignallingMessage message) { var snpps = (SubnetworkPointPool[])message.Payload; message.Operation = OperationType.SNPNegotiation; message.DestinationAddress = snpps[1].NodeAddress; message.DestinationControlPlaneElement = ControlPlaneElementType.LRM; SendMessage(message); }
public virtual void ReceiveMessage(SignallingMessage message) { OnUpdateState("[IN] " + message); var sessionId = message.SessionId; if (!IsCurrentlyHandled(sessionId)) { StartSession(sessionId); } }
private void SendRouteTableQuery(SignallingMessage message) { var routeTableQuery = message; routeTableQuery.Operation = OperationType.RouteTableQuery; routeTableQuery.DestinationAddress = LocalAddress; routeTableQuery.DestinationControlPlaneElement = ControlPlaneElementType.RC; SendMessage(routeTableQuery); }
private void SendLocalTopology(Link link) { var message = new SignallingMessage { Operation = OperationType.LocalTopology, DestinationAddress = LocalAddress.GetParentsAddress(), DestinationControlPlaneElement = ControlPlaneElementType.RC, Payload = link }; SendMessage(message); }
public override void ReceiveMessage(SignallingMessage message) { base.ReceiveMessage(message); switch (message.Operation) { case OperationType.CallRequest: HandleCallRequest(message); break; case OperationType.PolicyRequest: HandlePolicyRequest(message); break; case OperationType.DirectorySnppRequest: HandleDirectorySnppRequest(message); break; case OperationType.DirectoryAddressRequest: HandleDirectoryAddressRequest(message); break; case OperationType.CallCoordination: HandleCallCoordination(message); break; case OperationType.DirectoryNameRequest: HandleDirectoryNameRequest(message); break; case OperationType.CallAccept: HandleCallAccept(message); break; case OperationType.CallCoordinationResponse: HandleCallCoordinationResponse(message); break; case OperationType.ConnectionRequest: HandleConnectionRequest(message); break; case OperationType.ConnectionConfirmationToNCC: break; case OperationType.CallTeardown: HandleCallTeardown(message); break; case OperationType.CallTeardownResponse: HandleCallTeardownResponse(message); break; } }
private void SendDirectorySnppRequest(SignallingMessage message) { var directioryRequest = message; directioryRequest.Operation = OperationType.DirectorySnppRequest; directioryRequest.Payload = _nameDictionary[message.SessionId]; directioryRequest.DestinationAddress = NameServer.Address; directioryRequest.DestinationControlPlaneElement = ControlPlaneElementType.Directory; SendMessage(directioryRequest); }
private void SendDirectoryNameRequest(SignallingMessage message) { var directioryRequest = message; directioryRequest.Operation = OperationType.DirectoryNameRequest; directioryRequest.Payload = (NetworkAddress[])message.Payload; directioryRequest.DestinationAddress = NameServer.Address; directioryRequest.DestinationControlPlaneElement = ControlPlaneElementType.Directory; SendMessage(directioryRequest); }
private void SendCallCoordinationResponse(SignallingMessage message) { var callConfirmation = message; callConfirmation.Operation = OperationType.CallCoordinationResponse; callConfirmation.DestinationAddress = OtherDomainAddress(); callConfirmation.DestinationControlPlaneElement = ControlPlaneElementType.NCC; SendMessage(callConfirmation); }