Re: Interface Repository



Michael,

>         See ORBit2/src/orb/orb-core/orbit-small.c & orbit-interface.idl
> 
>         This provides a complete but compact description of an interface -
> such that you can bind to it easily. There is also a nicer method
> invocation process [ implemented in orbit-small ] that does not necesitate
> hand marshaling the arguments to a GIOP buffer for in-proc use - simply
> passing a list of pointers to them.

Yes, this looks similar to the interface orbit-python uses on top of
GIOP.

But, because all data types in OZ are dynamic expression-trees, it would
be a big overhead to
convert them into C-structures or C-unions. It seems to be much smoother
to push data into an
giop-stream directly while traversing those trees. (no additional memory
allocation). And while reading the giop-recv-stream creating
expression-trees directly with OZ memory allocation operations.
(see http://www.mozart-oz.org)

>         Interfaces that are register are available, but for non registered
> interfaces - a type library must be loaded - this is generated from
> essentialy the '-common' type description and is installed in
> ${prefix}/lib/orbit, and can be loaded by name - these would typicaly
> contain many interfaces eg. Bonobo_module.so - all the Bonobo interfaces.
> 
>         I'd be most interested in your feedback on this - since I'm
> preparing a paper on the subject to encourage adoption of this new
> approach.
Every repository-directory should contain at least one repository.rc
file, 
listing all valid repository-libs.

#### repository.rc file #######
<ir>
<module version="1.0" name="module1" lib="libmodule1"/>
<module version="1.1" name="module2" lib="libmodule2"/>
<repository version="1.0" type="passive"
location="file:/usr/local/gnome-dev/lib/repository.rc"/>
<repository version="1.0" type="active"  location="IOR:xxxxxxx"/> 
</ir>
###############################

Every repositoy file only introduces modules being in the same director
/
 or references  to other repository locations.

Every system has a major repository.rc file, e.g.
/etc/orbit/repository.rc. 
referencing /usr/lib/orbit and others. 

Every user has its own repository file in ~/.orbit/repository.rc that
points at least
to /etc/repository.rc. this is the root-repository for a user-session.

Having this, every user could use default respository entries, 
and add personal interface-repositories for development. 
Switching between  repositories should be possible 
to use different libs during a session.

Mounted partitions should have its own repository.rc file, pointing to
libs offered 
there. And each lib should point to furhter interface-repositories that
it depends on.

This mechanism is similar to the library handling of smalleiffel.
(see http//www.loria.fr/projets/SmallEiffel/)

Regards, Frank

---------------------------------------------------
 Frank Rehberger <frehberg@cs.tu-berlin.de>
---------------------------------------------------
 "Global order can arise from local interactions."
 [A.Turing, 1952]
---------------------------------------------------




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]