Package es.ull.mazesolver.util
Class MessageManager
java.lang.Object
es.ull.mazesolver.util.MessageManager
Clase que gestiona el paso de mensajes y la creación de grupos de mensajes
entre agentes.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionCrea un nuevo grupo y devuelve su nombre.void
Envía todos los mensajes en las colas a sus destinatarios, pero evitando enviar varias veces el mismo mensaje al mismo destinatario (es posible que un agente envíe el mismo mensaje a varios grupos y que haya algún agente en varios de ellos).boolean
groupCreated(String group)
Indica si un grupo ya ha sido creado.boolean
isSubscribed(MessageCommunication agent, String group)
Comprueba si un agente está suscrito a un grupo de mensajes determinado.boolean
sendMessage(MessageCommunication sender, String group, MessageCommunication.Message msg)
Pone un mensaje a la cola de un grupo para ser enviado posteriormente cuando se llame aflushMessageQueues()
.boolean
subscribeGroup(MessageCommunication agent, String group)
Suscribe el agente al grupo indicado, de manera que recibe los mensajes enviados a ese grupo.void
unsubscribeGroup(MessageCommunication agent, String group)
Hace que el agente deje de recibir mensajes del grupo especificado.
-
Constructor Details
-
MessageManager
public MessageManager()Construye una nueva instancia de la clase.
-
-
Method Details
-
subscribeGroup
Suscribe el agente al grupo indicado, de manera que recibe los mensajes enviados a ese grupo.- Parameters:
agent
- Agente que se quiere suscribir.group
- Grupo al que suscribir el agente.- Returns:
true
si el agente se añadió al grupo yfalse
si no se pudo añadir el agente al grupo.
-
unsubscribeGroup
Hace que el agente deje de recibir mensajes del grupo especificado.- Parameters:
agent
- Agente que quiere eliminar su suscripción.group
- Grupo del cual eliminar la suscripción.
-
sendMessage
public boolean sendMessage(MessageCommunication sender, String group, MessageCommunication.Message msg)Pone un mensaje a la cola de un grupo para ser enviado posteriormente cuando se llame aflushMessageQueues()
. Que la inserción se realice satisfactoriamente no implica que el mensaje sea enviado.- Parameters:
sender
- Agente que envía el mensaje.group
- Grupo al que se está enviando el mensaje.msg
- Mensaje que se quiere enviar.- Returns:
true
si el mensaje se ha colocado en la cola satisfactoriamente ofalse
si no se ha podido.- See Also:
flushMessageQueues()
-
createGroup
Crea un nuevo grupo y devuelve su nombre.- Returns:
- Nombre del grupo recién creado.
-
groupCreated
Indica si un grupo ya ha sido creado.- Parameters:
group
- Grupo del cual se quiere comprobar su existencia.- Returns:
- Si el grupo existe o no.
-
isSubscribed
Comprueba si un agente está suscrito a un grupo de mensajes determinado.- Parameters:
agent
- Agente que se quiere comprobar.group
- Grupo del que se quiere saber si el agente está suscrito.- Returns:
- Si el agente está suscrito al grupo o no.
-
flushMessageQueues
public void flushMessageQueues()Envía todos los mensajes en las colas a sus destinatarios, pero evitando enviar varias veces el mismo mensaje al mismo destinatario (es posible que un agente envíe el mismo mensaje a varios grupos y que haya algún agente en varios de ellos).
-