next up previous contents
Next: Methode getMigrateInfo() Up: 6.3.3 Klasse Migrate Previous: 6.3.3 Klasse Migrate

Methode mobileAgentWantToMigrate(...)

Ein MobileAgent ist der Erzeuger und zeigt mit dieser Methode an, daß er migrieren will:
 1  public synchronized void
 2  mobileAgentWantToMigrate(CfMAF.Name agentName, 
 3                           AgentSystemService destination) 
 4    throws de.unimuenchen.informatik.mnm.masa.agent.CouldNotMigrate{
 5    while (_migrateAgent == true) {
 6      try { // wait till agentManager read MigrateInfo
 7        wait();
 8      } 
 9      catch (InterruptedException e) {}
10    }
11    // _migrateInfo has type MigrateInfo
12    _migrateInfo.setInfo(agentName,destination);
13    _migrateAgent = true;
14    notifyAll();
15    try{
16      wait();
17    }
18    catch(java.lang.InterruptedException e){}
19    if ( ! _couldMigrate)
20      throw new CouldNotMigrate();
21  }
Als Parameter muß der Name des Agenten und das Zielagentensystem in Form einer CORBA-Objektreferenz angegeben werden. Eventuell muß der Agent warten, bis der AgentManager eine weitere Migration abgearbeitet hat (Zeile 5-10). Anschließend wird der eigentliche Migrationswunsch in das Attribut _migrateInfo geschrieben (Zeile 12). Der AgentManager wird durch den Aufruf von Methode notifyAll() (Zeile 14) aus seinem blockierenden Aufruf wait() in der Methode getMigrateInfo() unterbrochen (Zeile 4). Der Agent wird wiederum mit der Methode wait() solange blockiert (Zeile 16), bis das Quellagentensystem die Migration erfolgreich durchgeführt hat, oder ein Fehler aufgetreten ist und eine Ausnahmebehandlung eingeleitet wird (Zeile 20).



Copyright Munich Network Management Team