The liboaf Library | |||
---|---|---|---|
<<< Previous Page | Home | Up | Next Page >>> |
The OAF server is split in 2 parts: the ObjectDirectory which contains the list of all servers on a given machine, and the ActivationContext which contains the list of all ObjectDirectories. It contains by default the local ObjectDirectory and you can add inside other distant ObjectDirectories.
Each server is described by its .oafinfo file which contains among others the IDL interfaces this server implements, some specific properties and an IID (Implementation ID). Each IID has to be unique. Its format is pretty simple:
OAFIID:program_name:UUID |
Each CORBA server on a given machine is thus identified in a unique way. CORBA servers on different machines are uniquely identified through the AID (Activation ID). The AID format is also pretty simple:
OAFAID:[IID,user,host,domain] |
One important thing to understand about these AID and IID is that the ObjectDirectory deals exclusively with IIDs (it is stritcly local) and the ActivationContext deals with AIDs since it can associate a set of user, host and domain to each IID it gets from one of its ObjectDirectory.
As a result of this architecture, activation requests should go to the ActivationContext and registrations to the ObjectDirectory.
The idea behind this is that when you make a request on the ActivationContext (like query), it will:make sure it has an up-to-date list of all the Servers with a call to ObjectDirectory::get_servers for each of its ObjectDirectory.
loop through this list to try to satisfy the query with the given requirements and sort-order.
activate the corresponding object with ObjectDirectory::activate (this is not exactly what happens since there are optimizations to save this call but the general idea is right).