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.
Adresacja - implementacja
Podstawową implementacją serwisu adresacyjnego jest klasa org.jage.address.provider.DefaultAddressRegister implementująca interfejs org.jage.component.IAddressProvider
(oraz IAgEComponent
). Zapewnia ona domyślne zachowanie metod odpowiedzialnych za rejestrację i tworzenie nowych adresów.
Mechanizm rejestracji adresów dostępny jest poprzez interfejs IAgentEnvironment
rozszerzający IAddressRegister
, w którym to zdefiniowane są metody
boolean registerAddress(IAgentAddress address);
oraz
boolean unregisterAddress(IAgentAddress address);
boolean registerAgent(IAgentAddress address, List<IAddress> path);
oraz
boolean unregisterAgent(IAgentAddress address);
Na rysunku poniżej przedstawiono diagram stanów danego adresu.
Rysunek: Diagram stanów adresu.
Po utworzeniu adres znajduje się w stanie "niezarezerwowany". W momencie wywołania metody registerAddress, stan jego zmienia się na "zarezerwowany", chyba że wcześniej znajdował się w tym stanie lub w stanie "zarejestrowany". W takim przypadku metoda zwraca wartość false. Rejestracja adresu agenta z użyciem metody registerAgent powoduje zmianę stanu adresu na "zarejestrowany", przy czym wywołanie metody unregisterAgent zmienia stan na "zarezerwowany".
Interfejs IAddressRegister
implementowany jest na różnych poziomach struktury obliczeniowej, co zostało przedstawione na poniższym diagramie.
Rysunek: Diagram klas - interfejs IAddressRegister
.
Adresy rejestrowane są podczas dodawania agenta do agregatu. Agregat deleguje rejestrację agenta do swojego lokalnego środowiska. Jeśli środowiskiem tym jest inny agregat, wywołanie przesyłane jest do jego środowiska. Jeśli natomiast środowiskiem agregata jest workplace, wywołuje on odpowiednią metodę na swoim środowisku workplaceEnvironment. Podczas każdego z tych kroków tworzona jest ścieżka rejestracji, adres agregatu rejestrującego oraz każdego z pośredników dodawany jest na koniec tworzonej listy. W ostatnim kroku żądanie rejestracji trafia do AddressProvidera
. Powyższy schemat przedstawiono na diagramie poniżej.
Rysunek: Diagram sekwencji rejestracji agenta.
AddressProvidera
wywołuje następnie na adresie metodę register, przekazując jako parametr referencję do serwisu, z którego adres pobiera m.in. adres noda. Drugim parametrem jest omówiona powyżej ścieżka rejestracji w przypadku metody registerAgent lub wartość null dla metody registerAddress
. Poniższe kroki zilustrowano na diagramie poniżej.
Rysunek: Diagram sekwencji rejestracji adresu.
Druga z metod interfejsu IAddressRegister odpowiedzialna jest za odrejestrowanie podanego adresu. Jeśli adres nie był wcześniej zarejestrowany - nie robi nic.
IAgentEnvironment
jest dostępny dla każdego agenta, a odpowiednia właściwość ustawiana jest w momencie dodawania agenta do agregatu.
Attachments:



