©scilabs 2002 open communications interface (oci) vienna plenary meeting ©scilabs ingenieros s.l....
Post on 20-Dec-2015
214 views
TRANSCRIPT
©SCILabs 2002
www.SCILabs.es
Open Communications Interface (OCI)
Vienna Plenary Meeting
©SCILabs Ingenieros S.L. 2002 www.SCILabs.es
Miguel SegarraJosé Antonio Clavijo
HRTC
©SCILabs 2002
www.SCILabs.es
Speech Contents
• Introduction• Open Communications
Interface• Conclusions
©SCILabs 2002
www.SCILabs.es
Introduction
• What is OCI?• Constraints
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
What is OCI?
Introduction Open Comm. Intf. Conclusions
(RT)ORB
GIOP
TCP/IP IIOP
Hardcoded in the broker
(RT)ORB
TCP/IP ATM
GIOP
Transport plug-in
• In doing this we must allow independent implementations which are substituable and interoperable
©SCILabs 2002
www.SCILabs.es
What is OCI?
• The OCI defines common interfaces for pluggable transports
Introduction Open Comm. Intf. Conclusions
(RT)ORB
TCP/IP ATM
GIOP
Stubs/Skels
OCI Vendor independent interface
ORB Transport
Layer
Network Transport Layer
©SCILabs 2002
www.SCILabs.es
What is OCI?
• OCI establishes a separation between the inter-ORB transport protocol (GIOP) and the underlying network transport protocol (TCP/IP and others)
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
What is OCI?
• We need OCI because1. We may not have access to
the ORB internals to hook a new transport protocol (e.g. We do not have the ORB source code)
2. We can develop a transport protocol plug-in and use it with several ORBs
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
Constraints
• OCI supports reliable connection-oriented transports
• For non-reliable non-connection-oriented protocols, the plug-in must take care of reliability and connection management.
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
Open Communications Interface
• OCI is based in nine types of interfaces
• Five of them must be implemented by the developer to build a new transport plug-in
• Interfaces: buffer, transport, connector, acceptor, connector and acceptor factories, connector and acceptor factory registries, info objects
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
Open Communications Interface
ORB
Conn. Fact. Reg. Acc. Fact. Reg.
CLIENT SIDE SERVER SIDE
Conn. Fact. Acc. Fact.AcceptorConnector Transport
TCP/IPConn. Fact.
TCP/IP Acc. Fact.
TCP/IP Acceptor
TCP/IP Connector
TCP/IP Transport
1 1n n
creates
ABSTRACT
IMPLEMENTATION
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
Open Communications Interface
• The initial reference to the factory registries is obtained via the ORB’s resolve_initial_references() method.
– “OCIConFactoryRegistry”– “OCIAccFactoryRegistry”
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::Buffer
interface Buffer {readonly attribute unsigned long length;attribute unsigned long pos;void advance(in unsigned long delta);unsigned long rest_length();boolean is_full();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::Transport
interface Transport {readonly attribute ProtocolId id;readonly attribute ProfileId tag;readonly attribute OCI::Handle handle;void close();void shutdown();void receive(in Buffer buf, in boolean block);boolean receive_detect(in Buffer buf, in boolean block);void receive_timeout(in Buffer buf, in unsigned long timeout);void send(in Buffer buf, in boolean block);boolean send_detect(in Buffer buf, in boolean block);void send_timeout(in Buffer buf, in unsigned long timeout);TransportInfo get_info();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::TransportInfo
interface TransportInfo {readonly attribute ProtocolId id;readonly attribute ProfileId tag;readonly attribute ConnectorInfo connector_info;readonly attribute AcceptorInfo acceptor_info;string describe();void add_close_cb(in CloseCB cb);void remove_close_cb(in CloseCB cb);};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::CloseCB
interface CloseCB {void close_cb(in TransportInfo transport_info);};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::Connector
interface Connector {readonly attribute ProtocolId id;readonly attribute ProfileId tag;Transport connect();Transport connect_timeout(in unsigned long timeout);ProfileInfoSeq get_usable_profiles(in IOR ref, in CORBA::PolicyList policies );boolean equal(in Connector con);ConnectorInfo get_info();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::ConnectorInfo
interface ConnectorInfo {readonly attribute ProtocolId id;readonly attribute ProfileId tag;string describe();void add_connect_cb(in ConnectCB cb);void remove_connect_cb(in ConnectCB cb);};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::ConnectCB
interface ConnectCB {void connect_cb(in TransportInfo transport_info);};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::Acceptor
interface Acceptor {readonly attribute ProtocolId id;readonly attribute ProfileId tag;readonly attribute OCI::Handle handle;void close();void listen();Transport accept(in boolean block);Transport connect_self();void add_profiles(in ProfileInfo profile_info, inout IOR ref);ProfileInfoSeq get_local_profiles(in IOR ref);AcceptorInfo get_info();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::AcceptorInfo
interface AcceptorInfo {readonly attribute ProtocolId id;readonly attribute ProfileId tag;string describe();void add_accept_cb(in AcceptCB cb);void remove_accept_cb(in AcceptCB cb);};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::AcceptCB
interface AcceptCB {void accept_cb(in TransportInfo transport_info);};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::AccFactory
interface AccFactory {readonly attribute ProtocolId id;readonly attribute ProfileId tag;Acceptor create_acceptor(in ParamSeq params) raises(InvalidParam);AccFactoryInfo get_info();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::AccFactoryInfo
interface AccFactoryInfo {readonly attribute ProtocolId id;readonly attribute ProfileId tag;string describe();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::AccFactoryRegistry
interface AccFactoryRegistry {void add_factory(in AccFactory _factory) raises(FactoryAlreadyExists);AccFactory get_factory(in ProtocolId id) raises(NoSuchFactory);AccFactorySeq get_factories();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::ConFactory
interface ConFactory {readonly attribute ProtocolId id;readonly attribute ProfileId tag;ConnectorSeq create_connectors(in IOR ref, in CORBA::PolicyList policies);boolean equivalent(in IOR ior1, in IOR ior2);unsigned long hash(in IOR ref, in unsigned long maximum);ConFactoryInfo get_info();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::ConFactoryInfo
interface ConFactoryInfo {readonly attribute ProtocolId id;readonly attribute ProfileId tag;string describe();void add_connect_cb(in ConnectCB cb);void remove_connect_cb(in ConnectCB cb);};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::ConFactoryRegistry
interface ConFactoryRegistry {void add_factory(in ConFactory _factory) raises(FactoryAlreadyExists);ConFactory get_factory(in ProtocolId id) raises(NoSuchFactory);ConFactorySeq get_factories();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
OCI::Current
interface Current : CORBA::Current {TransportInfo get_oci_transport_info();AcceptorInfo get_oci_acceptor_info();};
Introduction Open Comm. Intf. Conclusions
©SCILabs 2002
www.SCILabs.es
Conclusions
• The OCI allows to create a transport plug-in for different ORBs that enable application interoperation through that transport.
Introduction RT CORBA Dev. Conclusions
©SCILabs 2002
www.SCILabs.es
Thank you!
Introduction RT CORBA Dev. Conclusions