public override bool Equals(object obj) { RegisterMessage message = obj as RegisterMessage; return(Deregister = message.Deregister && Id == message.Id && Enumerable.SequenceEqual(SolvableProblems, message.SolvableProblems) && Type == message.Type); }
public void Parse_RegisterMessage_XMLString() { string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"xml_samples\Register.xml"); RegisterType type = RegisterType.TaskManager; byte threads = 3; string[] problems = {"TSP","GraphColoring"}; RegisterMessage register = new RegisterMessage(type, threads, problems); register.Deregister = true; register.Id = 5; string actualXmlStr = register.ToXmlString(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(path); string expectedXmlStr = xmlDoc.OuterXml; Assert.AreEqual(expectedXmlStr, actualXmlStr); }
public void Parse_XMLString_RegisterMessage() { /*********** Actual message ***********/ string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"xml_samples\Register.xml"); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(path); string xmlStr = xmlDoc.OuterXml; string name = Message.GetMessageName(xmlStr); RegisterMessage actualMessage = null; if (name == RegisterMessage.ELEMENT_NAME) actualMessage = RegisterMessage.Construct(xmlStr); /*********** Expected message ***********/ RegisterType type = RegisterType.TaskManager; byte threads = 3; string[] problems = { "TSP", "GraphColoring" }; RegisterMessage expectedMessage = new RegisterMessage(type, threads, problems); expectedMessage.Deregister = true; expectedMessage.Id = 5; Assert.AreEqual(expectedMessage, actualMessage); }
private bool registerExistingNode(RegisterMessage message, Socket socket) { NetworkNode node = new NetworkNode(message.Type, message.Id, (uint)systemTracker.Timeout, message.ParallelThreads, message.SolvableProblems, clientTracker.BackupServers); IPAddress address = (socket.RemoteEndPoint as IPEndPoint).Address; int port = (ushort)Server.PRIMARY_PORT; // TODO hack if (clientTracker.BackupServers.Length == 1) port = (ushort)Server.PRIMARY_PORT2; node.Address = address; node.Port = (ushort)port; // Dont inform backup about it self // It comes naturally in NoOperation message if (node.Type == RegisterType.CommunicationServer && (server.Address.ToString().Equals(address.ToString()) && server.Port == port)) return false; SmartConsole.PrintLine("Backup adding existing node", SmartConsole.DebugLevel.Advanced); clientTracker.AddNode(node); return true; }
/// <summary> /// Register new node - Primary server job /// </summary> private void registerNewNode(RegisterMessage message, Socket socket) { // Place holder, have to fetch info from the System. ulong id = systemTracker.GetNextClientID(); uint timeout = (uint)systemTracker.Timeout; SmartConsole.PrintLine("Adding new Node", SmartConsole.DebugLevel.Advanced); NetworkNode node = new NetworkNode(message.Type, id, timeout, message.ParallelThreads, message.SolvableProblems, clientTracker.BackupServers); node.LastSeen = DateTime.Now; // Backup Server if (node.Type == RegisterType.CommunicationServer) { // update Node IPAddress address = (socket.RemoteEndPoint as IPEndPoint).Address; int port = (ushort)Server.PRIMARY_PORT; node.Address = address; // TODO hack if(clientTracker.BackupServers.Length == 1) port = (ushort)Server.PRIMARY_PORT2; node.Port = (ushort)port; } // Add the node to system clientTracker.AddNode(node); RegisterResponseMessage response = new RegisterResponseMessage(id, timeout, clientTracker.BackupServers); server.Send(socket, response); RegisterMessage backUpmessage = new RegisterMessage(message.Type, message.ParallelThreads, message.SolvableProblems); backUpmessage.Id = id; InformBackup(backUpmessage); }
/******************************************************************/ /**************************** REGISTER ****************************/ /******************************************************************/ /// <summary> /// Removes a node from the server /// </summary> /// <param name="message"></param> /// <param name="socket"></param> private void deregisterNode(RegisterMessage message, Socket socket) { SmartConsole.PrintLine("Deregister received, removing client...", SmartConsole.DebugLevel.Advanced); socket.Disconnect(false); clientTracker.RemoveNode(message.Id, message.Type); }
public static RegisterMessage CreateRegisterMessage() { RegisterType type = RegisterType.TaskManager; byte threads = 3; string[] problems = { "TSP", "GraphColoring" }; RegisterMessage expectedMessage = new RegisterMessage(type, threads, problems); expectedMessage.Deregister = true; expectedMessage.Id = 5; return expectedMessage; }