Re: Interface Repository
- From: Frank Rehberger <Frank Rehberger web de>
- To: orbit-list gnome org
- Subject: Re: Interface Repository
- Date: Thu, 26 Jul 2001 17:45:31 +0200
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]