next up previous
Next: Interface Repository Up: ORB Previous: ORB Initialization

Obtaining Initial References

 

The ORB offers two functions for obtaining object references for the interface repository, the implementation repository, and the naming service. Here is an example that shows how to obtain a reference for the interface repository using resolve_initial_references():

  int main (int argc, char *argv[])
  {
    CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "mico-local-orb");
    ...
    CORBA::Object_var obj =
      orb->resolve_initial_references ("InterfaceRepository");
    CORBA::Respository_var repo = CORBA::Repository::_narrow (obj);
    ...
  }

If you specify the interface repository by using the ORB command line option -ORBIfaceRepoAddr or -ORBIfaceRepoIOR, the reference returned from resolve_initial_references() will be the one you specified. Otherwise the ORB will run a local interface repository and you will get a reference to this one.

Obtaining a reference to the implementation repository ("ImplementationRepository") and the naming service ("NameService") works the same way as for the interface repository.

There is another method called list_initial_reference() that returns a list of names which can be used as arguments for resolve_initial_references(). Here is how to use it:

  int main (int argc, char *argv[])
  {
    CORBA::ORB_var orb = CORBA::ORB_init (argc, argv, "mico-local-orb");
    ...
    CORBA::ORB::ObjectIdList_var ids = orb->list_initial_references ();
    for (int i = 0; i < ids->length(); ++i)
      cout << ids[i] << endl;
    ...
  }



MICO
Tue Nov 10 11:04:45 CET 1998