/// <summary> /// Envía un mensaje a la MANET /// </summary> /// <param name="message">el mensaje a enviar</param> public void send(Message message) { //ImAliveMessage if (message.Type == MessageType.IMALIVE) { ImAliveMessage imAliveMessage = (ImAliveMessage)message; produceEvent(CommunicationEvent.NETINFORMATION, "COMMUNICATION WARNING: reserved kind of message " + imAliveMessage.ToString()); } //AckMessage else if (message.Type == MessageType.ACK) { AckMessage ackMessage = (AckMessage)message; produceEvent(CommunicationEvent.NETINFORMATION, "COMMUNICATION WARNING: reserved kind of message " + ackMessage.ToString()); } //Resto de los mensajes else { internalSendMessage(message); } }
/// <summary> /// Procesa un mensaje que no ha podido ser envíado correctamente /// </summary> /// <param name="message">El mensaje</param> internal void routerMessageErrorHandler(Message message) { //ImAliveMessage if (message.Type == MessageType.IMALIVE) { ImAliveMessage imAliveMessage = (ImAliveMessage)message; produceEvent(CommunicationEvent.NETINFORMATION, "ROUTER: message delivery fail " + imAliveMessage.ToString()); } //AckMessage else if (message.Type == MessageType.ACK) { AckMessage ackMessage = (AckMessage)message; produceEvent(CommunicationEvent.NETINFORMATION, "ROUTER: message delivery fail " + ackMessage.ToString()); } //Resto de los mensajes else { SubProtocolI subProtocol = (SubProtocolI)subProtocols[message.ProtocolType]; if (subProtocol != null) { eventQueuePC.put(new Event(new MessageEvent(subProtocol.errorMessage), message)); } else { produceEvent(CommunicationEvent.ERRORMESSAGE, message); } produceEvent(CommunicationEvent.NETINFORMATION, "ROUTER: message delivery fail " + message.ToString()); } }