/// <summary> /// Funcţia efectivă de transformare a mesajelor cerere în mesaje raspuns folosind serviciul ataşat. /// Realizează interpretarea tipului cererii şi determină acţiunile necesare pentru a afla răspunsul. /// </summary> /// <param name="message">Cererea</param> /// <param name="from">Adresa de unde provine cererea</param> /// <returns>Raspunsul la cerere</returns> public Message answer(Message message, IPAddress from) { if (message.request.Equals("getFunctionalities")) { return new Message("receiveFunctionalities", this.domainOntologyService.getAllFunctionalities()); } else { if (message.request.Equals("getOntology")) { if (message.numberOfParameters == 1) { string[] ontology = this.domainOntologyService.getSerializedOntology(message.getParameter(0)); if (ontology != null) { return new Message("receiveOntology", ontology); } else { return new Message("ERROR", new string[2] { "Unknown functionality", message.getParameter(0) }); } } else { return new Message("ERROR", new string[2] { "Missing parameter", "Functionality" }); } } else { return new Message("ERROR", new string[2] { "Unknown request", message.request }); } } }
/// <summary> /// Trimite mesajul către adresa menţionată şi returnează răspunsul. /// </summary> /// <param name="to">Adresa spre care să trimită mesajul</param> /// <returns>Mesajul răspuns primit înapoi</returns> public Message deliverAndWaitFeedback(Address to) { try { byte[] stream = this.serialize(); NetworkStream netStream = new TcpClient(to.ip, to.port).GetStream(); netStream.Write(stream, 0, stream.Length); netStream.Flush(); Message answer = new Message(netStream); netStream.Close(); return answer; } catch (Exception) { return null; } }