Package edu.stanford.slac.aida.lib.dp

Defines the abstract data types that define the callable interfaces of the peers in an Aida network (most importantly the Data Provider peers).

See:
          Description

Interface Summary
AidaObjectI  
AidaObjectIOperations  
 

Class Summary
_AidaObjectIStub  
AidaObjectIHelper  
AidaObjectIHolder  
AidaObjectIPOA  
AidaObjectRef  
AidaObjectRefHelper  
AidaObjectRefHolder  
 

Package edu.stanford.slac.aida.lib.dp Description

Defines the abstract data types that define the callable interfaces of the peers in an Aida network (most importantly the Data Provider peers).

AidaObjectI is the abstract interface which defines the API of an Aida Data Provider. Specifically, each data provider is no more than an implementation of an AidaObjectI. Recall, in the Aida naming convention, the I sufix denotes an interface, either implemented by CORBA (as in this case), or a Java "interface".

However, the mechanism in which this comes about is quite tricky: AidaObjectI is defined, using CORBA, as an IDL interface in /idl/aidaObject.idl. The output of the jidl compile of that file, is used in two ways:

To construct each Data Provider's basic CORBA interface code:
When gmake is run on the makefile makefileAida.sun4 to build a given Data Provider, it runs jidl on aidaObject.idl. That idl file contains a module definition named "dp", and interface "aidaObjectI". jidl creates the CORBA support files for the interface so defined, and the template _impl file of a template data provider, calling it aidaObjectI_* (constructing a template aidaObjectI_impl in particular). The next part of this build sequence, as implemented in the rules in the Makefile.sun4 of Data Provider, is to literally sed the output of jidl and change all instances of aidaObjectI to dataprovdiernameI . See, for instance, /dp/dpCa/Makefile.sun4. The "dp" is changed to the given Data Provider's package name, and the interface to the Data Provider's name (these two may be the same). The output of the jidl is left in this directory (util.dp), whereas the output from teh subsequent sed is left in the Data Provider's package directory.
Used by the Aida API objects to interact with Aida peers:
The Aida API objects, DaObject and DaReference, through which DaServer or an application programs calls Data Providers, actually understand each peer through private member data defined as aidaObjectI and aidaObjectRef. In this way, the DaServer and client programs can call a Data Provider peer without actually having instantiated an instance of the interface object for that Data Provider by name. For instance, they can call methods of Data Provider dpCa without having to construct a an object of dpCaI by just calling methods on an aidaObjectI.

AidaObjectRef is used by the Aida API object DaReference, to hold the run-time information about the Data Providers needed to satisfy a query. Specifically, it contains the infomation relating to servers, such as IORs and necessary output ordering, for the compiled query encapsulated in a DaReference.

Makefiles for making Data Providers

Makefile
Makes each of Makefile1, Makefile2, Makefile3 in order.
Makefile1
Makes lib/dp itself.
Makefile2
Makes aidaObjectRef.
Makefile3
Makes aidaObject.
Last modified: Sun May 4