Keywords: doc

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;
        ...
      }