Example #1
0
RemoteRegistry::RemoteRegistry( const std::string & name )
{
  _registry = load( "BroadcastRegistry", "bootstrap", _options, "" );
  _registry->registerMessageType( "SERVER_COMMAND", ROTOR_DEFINITION_STRING( RemoteCommand ) );
  _registry->registerMessageType( "OPTION_STRING", ROTOR_DEFINITION_STRING( OptionString ) );

  Structure request( "RemoteCommand", 0, *_registry );
  request["command"]   = "GET_OPTIONS";
  request["arguments"] = "rotor_server";
  Structure reply = _registry->queryStructure( "SERVER_COMMAND", request, 3 );
  Logger::info( "Main server found", "RemoteRegistry" );
  
  OptionString sReply;
  sReply << reply;  
  _options.fromString( sReply.value );

  Logger::info( "Loading definitive registry", "RemoteRegistry" );
  _registry = load( _options.getString( "rotor_server", "registry" ), name, _options, "" );
  _registry->registerMessageType( "SERVER_COMMAND", ROTOR_DEFINITION_STRING( RemoteCommand ) );
  _registry->registerMessageType( "OPTION_STRING", ROTOR_DEFINITION_STRING( OptionString ) );
  Logger::debug( "Retrieving options" );
  
  request["command"]   = "GET_OPTIONS";
  request["arguments"] = "*";
  
  reply.referTo( _registry->queryStructure( "SERVER_COMMAND", request, 3 ) );
  
  Logger::debug( reply.toString() );
  
  sReply << reply;
  _options.fromString( sReply.value );
  
  Logger::info( 
    string( "Connected to server with transport: " ) + _options.getString( "rotor_server", "registry" ),
    "RemoteRegistry" 
  );
}