/// <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 });
                }
            }
        }
Exemple #2
0
        /// <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;
            }
        }