public static void sendTopologyInit(string ip) { NetNode.log(DateTime.Now.ToLongTimeString() + " [LRM -> RC] inittopology: " + ip, ConsoleColor.Yellow); RCtoLRMSignallingMessage protocol = new RCtoLRMSignallingMessage(); protocol.State = RCtoLRMSignallingMessage.LRM_INIT; protocol.NodeName = ip; String send_object = JMessage.Serialize(JMessage.FromValue(protocol)); writer.Write(send_object); }
public static void sendDeleted(string from, int port, string to) { string toSend = port.ToString() + " " + to; NetNode.log(DateTime.Now.ToLongTimeString() + " [LRM -> RC] info about deletion: " + toSend, ConsoleColor.Yellow); RCtoLRMSignallingMessage protocol = new RCtoLRMSignallingMessage(); protocol.State = RCtoLRMSignallingMessage.LRM_TOPOLOGY_DELETE; //protocol.ConnectedNodePort = port; protocol.ConnectedNode = to; String send_object = JMessage.Serialize(JMessage.FromValue(protocol)); writer.Write(send_object); }
public static void sendTopologyDeallocated(int port, int no_vc3) { string to; LRM.connections.TryGetValue(port, out to); NetNode.log(DateTime.Now.ToLongTimeString() + " [LRM -> RC] topology deallocated: " + to + " " + no_vc3, ConsoleColor.Red); RCtoLRMSignallingMessage protocol = new RCtoLRMSignallingMessage(); protocol.State = RCtoLRMSignallingMessage.LRM_TOPOLOGY_DEALLOCATED; protocol.ConnectedNode = to; protocol.AllocatedSlot = no_vc3; String send_object = JMessage.Serialize(JMessage.FromValue(protocol)); writer.Write(send_object); }
private void handleThread(Object obj) { TcpClient client = (TcpClient)obj; BinaryReader reader = new BinaryReader(client.GetStream()); writer = new BinaryWriter(client.GetStream()); Boolean noError = true; while (noError) { try { string received_data = reader.ReadString(); JSON received_object = JSON.Deserialize(received_data); if (received_object.Type == typeof(RCtoLRMSignallingMessage)) { RCtoLRMSignallingMessage lrmMsg = received_object.Value.ToObject <RCtoLRMSignallingMessage>(); switch (lrmMsg.State) { case RCtoLRMSignallingMessage.LRM_INIT: identifier = lrmMsg.NodeName; rc.initLRMNode(identifier); socketHandler.Add(identifier, writer); break; case RCtoLRMSignallingMessage.LRM_TOPOLOGY_ADD: rc.addTopologyElementFromLRM(identifier, lrmMsg.ConnectedNode, lrmMsg.ConnectedNodePort); break; case RCtoLRMSignallingMessage.LRM_TOPOLOGY_DELETE: rc.deleteTopologyElementFromLRM(lrmMsg.ConnectedNode); break; case RCtoLRMSignallingMessage.LRM_TOPOLOGY_ALLOCATED: rc.allocatedTopologyConnection(identifier, lrmMsg.ConnectedNode, lrmMsg.AllocatedSlot); break; case RCtoLRMSignallingMessage.LRM_TOPOLOGY_DEALLOCATED: rc.deallocatedTopologyConnection(identifier, lrmMsg.ConnectedNode, lrmMsg.AllocatedSlot); break; } } else if (received_object.Type == typeof(RCtoRCSignallingMessage)) { RCtoRCSignallingMessage rcMsg = received_object.Value.ToObject <RCtoRCSignallingMessage>(); if (!socketHandler.ContainsKey(rcMsg.Identifier)) { socketHandler.Add(rcMsg.Identifier, writer); } switch (rcMsg.State) { case RCtoRCSignallingMessage.RC_FROM_SUBNETWORK_INIT: if (!socketHandler.ContainsKey(rcMsg.Identifier)) { socketHandler.Add(rcMsg.Identifier, writer); } break; case RCtoRCSignallingMessage.COUNTED_ALL_PATHS_CONFIRM: if (!rc.iAmDomain) { rc.lowerRcSendedConnectionsAction(rcMsg.NodeConnectionsAndWeights, rcMsg.AssociatedNodesInSubnetwork, rcMsg.RateToCountWeights, rcMsg.Identifier); } else { rc.startProperWeigthComputingTopBottom(rcMsg.NodeConnectionsAndWeights, rcMsg.AssociatedNodesInSubnetwork, rcMsg.RateToCountWeights, rcMsg.Identifier, rc.requestNodeFrom, rc.requestNodeTo); } break; case RCtoRCSignallingMessage.COUNTED_ALL_PATHS_REFUSE: rc.lowerRcSendedRejectAction(rcMsg.RateToCountWeights, rcMsg.Identifier); break; } } else if (received_object.Type == typeof(CCtoCCSignallingMessage)) { CCtoCCSignallingMessage ccMsg = received_object.Value.ToObject <CCtoCCSignallingMessage>(); switch (ccMsg.State) { case CCtoCCSignallingMessage.CC_MIDDLE_INIT: if (!socketHandler.ContainsKey(ccMsg.Identifier)) { socketHandler.Add(ccMsg.Identifier, writer); } break; case CCtoCCSignallingMessage.RE_ROUTE_QUERY: cc.reRouteInit(); break; } } } catch (IOException ex) { } } }