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:

addIntRegSeq.jpg (image/jpeg)
addRegSeq.jpg (image/jpeg)
addrStates.jpg (image/jpeg)
registerClassDiagram.jpg (image/jpeg)