CORBA Support

The CORBA support provided by OiL is restricted to interoperability with other ORBs. In particular, OiL does not embrace the programming interfaces defined by the CORBA specification. Instead, it uses a different programming interface specifically designed for Lua. This interface is described in section Basic Concepts.

Standard OiL defines four standard flavors for creation of CORBA brokers, as listed below. For more information about how to initialize brokers with a specific flavor see oil.init.

corba
CORBA support without multithreading.
cooperative;corba
CORBA support with multithreading.
intercepted;corba
CORBA support without multithreading, but with support for invocation interceptions.
cooperative;intercepted;corba
CORBA support with multithreading and support for invocation interceptions.

When a broker is initialized with CORBA support, some additional features are enabled, as described in the following sections.

Loading IDL
Describes the API provided to load into the broker type definitions described in CORBA's IDL or stored in remote CORBA Interface Repositories.
Value Mapping
Describes how IDL types are mapped to Lua values, and how to define new types programmatically.
Additional Features
Describes additional features provided by CORBA brokers, like implicit servant creation, local reference resolution, etc.
Intercepting Invocations
Describes the support for interception of CORBA invocations.

Supported Features

Some features defined by CORBA are not implemented by OiL. See the table below for a list of some of the CORBA features currently provided by OiL and also some of those that are not provided yet.

Feature Since
Types and marshalling
Boolean O2
Character O2
Numeric types
  • octet
  • (unsigned) short
  • (unsigned) long
  • float
  • double
O2
Large numeric types
  • long long
  • unsigned long long
  • long double
0.4
Fixed decimal Not supported yet
Enumeration O2
Struct O2
Union O2
Sequence O2
Array O2
String O2
Wide character types
  • wide char
  • wide string
Not supported yet
Object reference O2
TypeCode O2
Any O2
Value type 0.5
Abstract interface 0.5
Principal Not supported yet
Native Not supported yet
Protocols
GIOP/IIOP 1.0 O2
GIOP/IIOP 1.3 0.6
Bidirectional GIOP 0.6
Object references
Stringfied IOR's O2
corbaloc URLs 0.2
corbaname URLs Not supported yet
FTP URLs (optional) Not supported yet
HTTP URLs (optional) Not supported yet
Initial References Not supported yet
ORB and servants
_non_existent basic operation 0.2
_is_a basic operation 0.3
_interface basic operation 0.3
ORB net interface and port definition O2
Multiple ORB instances 0.1
Attribute implementation as servant fields O2
Attribute implementation by _set_ and _get_ operations 0.1
Concurrent request handling 0.3
Absolute interface names 0.3
Shutdown operation 0.4
Operation invocation and dispatch interception 0.4
Operation invocation forwarding during interception 0.5
POA manament and policies Not supported yet
CORBA Services
Integrated interface repository 0.3
Naming service 0.3.1
Trading service Not supported yet
Event service Not supported yet
Notification service Not supported yet
Dynamic proxies
_non_existent basic operation 0.2
_interface basic operation O2
_is_a basic operation 0.3
_is_equivalent basic operation 0.4
_is_nil basic operation Not supported yet
oneway operations 0.1
deferred invocations (futures) 0.4

Copyright (C) 2004-2014 Tecgraf, PUC-Rio

This project is currently being maintained by Tecgraf at PUC-Rio.