Deprecation warning

This is documentation for version 2.4 of the platform. It does not reflect the real behavior of the system in new jAgE 2.5 snapshots.

Wiadomości

Klasą bazową dla wiadomości jest Message. Zawiera ona jedynie adres nadawcy wiadomości oraz zapewnia podstawową implementację interfejsu Comparable (wszystkie wiadomości są sobie równe - brak priorytetów). Fakt implementowania tego interfejsu przez klasy wiadomości jest wykorzystywany do szeregowania obiektów wiadomości. W przypadku agentów działających krokowo wiadomości są przechowywane w kolejce odpowiednio według rezultatu metody compareTo. Agent zawsze odbiera najpierw "największą" wiadomość.

Klasa PriorityMessage zapewnia obsługę priorytetów. Priorytet wiadomości został zaimplementowany jako liczba całkowita. Najwyższy priorytet ma wartość 0.

Platforma dostarcza jednej nieabstrakcyjnej klasy wiadomości - TextMessage. Treścią takiej wiadomości jest ciąg znaków.

Ostatnią przedstawioną na powyższym diagramie klasą wiadomości jest MessageForward. Stanowi ona klasę bazową dla wiadomości, które mają być dostarczone do większej liczby odbiorców według pewnej ustalonej reguły. Zawarta w obiekcie wiadomość zostaje przekazana wszystkim znajdującym się w agregacie agentom, dla których metoda matchesReceiver zwróci true.

Każdy działający "krokowo" agent posiada własną kolejkę wiadomości. Wiadomości w kolejce są uporządkowane zgodnie z wartościami zwracanymi przez metodę compareTo. W przypadku nadejścia wiadomości agregat przekazuje ją do kolejki agenta za pomocą metody deliverMessage.

Agent odbiera wiadomości przy użyciu metody receiveMessage, która zwraca wiadomość z początku kolejki. W przypadku agentów działających jako osobne wątki również wywoływana jest metoda deliverMessage, która jednak nie kolejkuje wiadomości, ale obsługuje je bezpośrednio.

Attachments:

messages.png (image/png)