mobileplaceconnectioncommand.java

来自「一个agent 工具包,可以开发移动设备应用,考虑了安全措施」· Java 代码 · 共 83 行

JAVA
83
字号
package SOMA.mobilePlace;

import SOMA.naming.*;
import SOMA.naming.place.*;
import SOMA.network.connection.*;

/** Comando di registrazione del {@link MobilePlaceNameService PNS} di un place mobile presso il PNS del default place.
*
* @author Livio Profiri
*/
public class MobilePlaceConnectionCommand extends Command
{
  PlaceInfo myPlaceInfo;

  /** Costruttore */
  public MobilePlaceConnectionCommand( PlaceInfo myPlaceInfo )
  {
    this.myPlaceInfo = myPlaceInfo;
  }

  public void run()
  {
    // Sarebbe opportuno aggiungere una procedura di controllo di sicurezza.

    // Comunicare posizione ad interessato e alla Home
    //   env.mobilePlaceManager.putPosition( myPlaceInfo.placeID, env.placeID );

    // Vedi PlaceRegisterCommand

    env.placeNameService.putPlace( myPlaceInfo );

    PlaceID mobilePlaceID = myPlaceInfo.placeID;
    PlaceID homePlaceID = ((MobilePlaceID)mobilePlaceID).getHome();

    env.networkManager.connectionStore.putConnection( mobilePlaceID, ReturnConnection ); //!!!!!!!!!!!!!!!!!!!!!
    env.networkManager.sendCommand( mobilePlaceID, new PlaceRefreshCommand( env ));

    // Aggiorno la posizione del place mobile sul place mobile
    env.networkManager.sendCommand( mobilePlaceID,
        new UpdateMobilePlacePositionCommand( env.placeID ) );

    // Aggiorno la posizione del place mobile sulla home
    env.networkManager.sendCommand( homePlaceID,
        new UpdateHomePositionCommand( mobilePlaceID, env.placeID ) );
  }

  public static class UpdateHomePositionCommand extends Command
  {
    PlaceID mobilePlaceID;
    PlaceID actualDomainID;

    UpdateHomePositionCommand( PlaceID mobilePlaceID, PlaceID actualDomainID )
    {
      this.mobilePlaceID = mobilePlaceID;
      this.actualDomainID = actualDomainID;
    }

    public void run()
    {
      env.mobilePlaceManager.putPosition( mobilePlaceID, actualDomainID );
      env.out.println( "HOME - Mobile Place: " + mobilePlaceID + " joined domain: " + actualDomainID );

      if( !actualDomainID.equals( MobilePlaceManager.DISCONNECTED ) )
        env.mobilePlaceManager.sendWaitingAgents( mobilePlaceID );
    }
  }

  public static class UpdateMobilePlacePositionCommand extends QuickCommand
  {
    PlaceID actualDomainID;

    UpdateMobilePlacePositionCommand( PlaceID actualDomainID )
    {
      this.actualDomainID = actualDomainID;
    }

    public void run()
    {
      ((MobileEnvironment)env).currentDomainID = actualDomainID;
      env.out.println( "Mobile Place: " + env.placeID + " joined domain: " + actualDomainID );
    }
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?