Keywords: doc

Next: Listing All Entries Up: BOA Previous: BOA Daemon

## Implementation Repository

The implementation repository is the place where information about an object implementation (also known as server) is stored. The CORBA 2 specification gives you only an idea what the implementation repository is for, but does not specify the interface to it. So the design of the implementation repository is MICO specific. Here is the IDL for MICO's implementation repository:

     1:  module CORBA {
     2:    /*
     3:     * Implementation Repository Entry
     4:     */
     5:    interface ImplementationDef {
     6:
     7:      enum ActivationMode {
     8:        ActivateShared, ActivateUnshared,
     9:        ActivatePerMethod,
    10:        ActivatePersistent,
    11:        ActivateLibrary
    12:      };
    13:
    14:      typedef sequence<string> RepoIdList;
    15:
    16:      attribute ActivationMode mode;
    17:      attribute RepoIdList repoids;
    18:      readonly attribute string name;
    19:      attribute string command;
    20:    };
    21:
    22:    /*
    23:     * Implementation Repository
    24:     */
    25:    interface ImplRepository {
    26:      typedef sequence<ImplementationDef> ImplDefSeq;
    27:
    28:      ImplementationDef create (...);
    29:      void destroy (in ImplementationDef impl_def);
    30:      ImplDefSeq find_by_name (in string name);
    31:      ImplDefSeq find_by_repoid (in string repoid);
    32:      ImplDefSeq find_all ();
    33:    };
    34:  };

Interface `ImplRepository` defined in lines 25-33 is the implementation repository itself. It contains methods for creating, destroying and finding entries. An implementation repository entry is defined by interface `ImplementationDef` in lines 5-20. There is exactly one entry for each server which contains

- name
- activation mode
- shell command or loadable module path
- list of repository ids

for the sever. The name uniquely identifies the server. The activation mode tells the BOA whether the server should be activated once (shared server), once for each object instance (unshared server), once for each method invocation (per method server), or not at all (persistent server). See section 4.3.4 for details on activation modes. The shell command is executed by the BOA whenever the server has to be (re)started. Activation mode library is used for loading servers into the same process as the client during runtime. Instead of a shell command you have to specify the path of the loadable server module for library activation mode. Finally there is a repository id for each IDL interface implemented by the server. See section 3.3.3 for details on repository ids.

If you have written a server that should be activated by the BOA daemon when its service is requested you have to create an entry for that server. This can be accomplished by using the program `imr`. `imr` can be used to list all entries in the implementation repository, to show detailed information for one entry, to create a new entry, and to delete an entry.

The implementation repository is selected by the `-ORBImplRepoAddr` or `-ORBImplRepoIOR` options, which you usually put into your `.micorc` file.

- Listing All Entries
- Details For One Entry
- Creating New Entries
- Deleting Entries
- Forcing Activation of an Implementation
- Examples

Next: Listing All Entries Up: BOA Previous: BOA Daemon