Hi list,
Since I works on the IDL/ORB design I want list to have some discuss on it.
I'm writing the white paper about this subject and I want present some basics 
of this design.
Well, firstly I take a look to CORBA/ORB (specifications and some 
implementations) i.e. 
I don't making something new (it's not necessary), second - all of my ideas was 
taken from several projects - L4 
Dice(http://www.inf.tu-dresden.de/index.php?node_id=1539&ln=en),
Qedo (http://qedo.berlios.de/project.php4?lang=eng) and some other (this two 
ones has more 
influence to my design).
In first of all I want to list features that should be supported by design:
 - flexible 
 - layered (IDL should works on different layers)
 - simplicity
 - extensible (since we're want to support industrial standards it's a good 
time to think about)
Advantages.
Flexibility. It's very possible that we will change some identification rules 
(DAC/MAC/capability etc).
This will affect low level part of ORB/IDL. I think that we need in some 
abstract interface for it that 
might be changed with simple relinking with different low level ORB/IDL library.
Layered design. Protocol headers may contain several stuff i.e. one data for 
one layer, other data for other layer and so on. If we will has a possibility 
to get 
IDL stuff works anywhere we will simply be able to compound server parts in any 
ways (for 
example we will able to split filesystem with block device driver in a one 
single service, or 
contrary divide top abstract device driver from low level device driver in 
different services).
Simplicity. IDL should be simple as it possible, it will allow us to assemble 
new interface and 
new subsystems in a short time terms.
Extensible. Many industrial standards require many features as QoS, transparent 
data flow etc ...
Disadvantages.
Additional libraries will be added.
New abstract structures will waste some memory.
Build process will became more sophisticated and complex.
IDL syntax knowledge will be required for development.

Going on, I want to describe the basics.
There are several major parts of IDL/ORB will be exist:
 - IDL (specialized DSL conforming to CORBA)
 - IDL compiler (primary for C only)
 - libraries one for client, other for server (typical client applications 
doesn't required server stuff)
On the low level of ORB/IDL new abstraction will be added, it's called 
'ticket', well what is it?
Ticket is a request identification that contain permissions and client 
identification stuff.
For example, currently (with nowadays design) it will be a structure with uid, 
gid(primary group), pid of the 
client, but on future it may contain labels, name space id etc. It also might 
be a binding for capability 
assigned for the client, or something else.
This abstract structure will be operated by library with some abstract 
interface that will used in the 
IDL generated code.
I attach the abstract diagram of the design in this email.
On this diagram you will see a message - message is IPC object, but it will 
always contain ticket and 
IDL data. Library can use low level IPC/IPCbox features to get the ticket 
(ipc_message_info currently), 
but ticket may be extended with optional values (for example some session 
identifications).
IDL data processed by the IDL generated code (using sbuf in our case). Both the 
client and the server will 
has the same defined structures.
So, data flow will looks like:
 - server ORB lib get message, take ticket and call the IDL code
 - IDL code take sbuf from library, parse protocol headers, call required 
procedure with ticket and parsed data
 - if you need additional protocol parsing your calls may call IDL code again 
for top layer protocol parser
 - in finite stage procedure call IDL code to reply/forward the message

Any comments ? is there questions ?

PS I'm not sure that I explained basics of this design so good as it should be.

-- 
Alfeiks KaƤnoken,
Team Lead of the
Jari OS R&D Team.
http://jarios.org
Free open-source 
microkernel-based
multiservice RTOS

<<attachment: fig1_abstract.png>>

_______________________________________________
Jarios-dev mailing list
[email protected]
http://lists.jarios.org/cgi-bin/mailman/listinfo/jarios-dev

Reply via email to