1 protected synchronized MigrateInfo getMigrateInfo() { 2 while (_migrateAgent == false) { 3 try { 4 wait();// wait till a MobileAgent set MigrateInfo 5 } 6 catch (InterruptedException e) {} 7 } 8 return _migrateInfo; 9 }
Nun ruft der AgentManager die oben beschriebene Methode
migrateAgent(...) auf (vgl. Unterabschnitt 6.3.2)
und migriert den Agenten.
Mit den Methode setCouldMigrate(...):
1 protected synchronized static void
2 setCouldMigrate(boolean couldMigrate){
3 _couldMigrate= couldMigrate;
4 _migrateAgent = false;
5 }
wird angezeigt, ob die Migration erfolgreich war und mit der Methode
notifyAgent():
1 protected synchronized void notifyAgent(){
2 notify();
3 }
wird schließlich der Monitor in der Methode
mobileAgentWantToMigrate(...) wieder freigeben (Zeile 16), so daß
ein neuer MobileAgent in die Methode eintreten kann.
MobileAgent in der Methode mobileAgentWantToMigrate(...) aus dem wait() in Zeile 16 unterbrochen.
Die Migration ist vollständig abgeschlossen.