[omniORB] OmniORB over ATM

David Riddoch djr@uk.research.att.com
Fri, 18 Jun 1999 19:06:48 +0100 (GMT)


On Fri, 18 Jun 1999, Basma Driss wrote:

> I'm trying to add an ATM transport to the ORB. I have read the papers
> about omniTransport "The implementation of a Native ATM Transport for a
> high performance ORB" and omniORB2 "The implementation of a high
> performance ORB over multiple network transports". I have also read the
> notes in ropeFactory.h.
> 
> However, I don't understand the following:
> 
> Suppose that I have added the code to create ATM incomning connections
> in BOAobjectManager and ATM outgoing connections in ORB_init. When I'm
> running an application in an ATM platform, how does the omniORB realize
> that the network transport is AAL5 and uses the ATM factories instead of
> TCP factories.

When you export a reference to your object, the IOR will contain an entry
(profile) for each of the transports enabled.  (Transports are enabled by
registering incoming rope factories).  The issue is then which one will
the ORB choose on the client side.  The implementation in omniORB will
select the first profile for which an outgoing rope factory is registered.
That is to say, if the first profile given in the IOR is for TCP/IP, then
it will try and make a TCP/IP rope and only if that fails look at the
remaining profiles.

The order in which the profiles appear in the IOR depends on the order in
which the outgoing rope factories were registered.

One way to ensure ATM is used is to only register the ATM outgoing rope
factory.  To control which transport is selected when there are several,
you will need to modify the ORB.  The object reference is created in:

  omni::createObjRef()   objectRef.cc

That calls the following function to choose a rope:

  ropeFactory::iopProfilesToRope()   ropeFactory.cc

I think this is what you will want to modify to provide transport
selection.

Hope that helps,
David