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.

On the other hand, OiL follows the specification of the underlying GIOP protocol and its mapping to TCP/IP (a.k.a. IIOP) to interoperate with other CORBA ORBs. However, many features defined by CORBA are not implemented by OiL. See the table at the end of this page for a list of some of the CORBA features currently provided by OiL and also some of those that are not provided.

When a broker is created with CORBA support, an additional API is enabled. Basically, this API is necessary to provide support for the typing information required by CORBA, as it is described in the following sections.

Configuration Options
Describes the configuration options for initialization of CORBA brokers.
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
Feature Tested Since Limitations
Types and marshalling
Commom primitive IDL types
  • Numeric types
  • Structs
  • Unions
  • Sequences
  • Arrays
  • String
Partial O2
Advanced primitive IDL types
  • long long
  • unsigned long long
  • long double
Partial 0.5
Object references Yes O2
TypeCodes for supported types Partial O2
CORBA's Any Yes O2
GIOP 1.0 Yes O2
IIOP 1.0 Yes O2
Object references
Stringfied IOR's Yes O2
corbaloc URLs Yes 0.2
ORB and servants
_non_existent basic operation Yes 0.2
_is_a basic operation Yes 0.3
_interface basic operation Yes 0.3
ORB net interface and port definition No O2
Definition of host and port for IOR generation No 0.1
Multiple ORB instances Yes 0.1
Attribute implementation as servant fields Yes O2
Attribute implementation by _set_ and _get_ operations Yes 0.1
Concurrent request handling Yes 0.3
Absolute interface names Yes 0.3
Shutdown operation Yes 0.5
Operation invocation and dispatch interception Yes 0.5
CORBA Services
Integrated interface repository Yes 0.3
Naming service Yes 0.3.1
Dynamic proxies
_non_existent basic operation Yes 0.2
_interface basic operation Yes O2
_is_a basic operation Yes 0.3
_is_equivalent basic operation Yes 0.5
oneway operations No 0.1
deferred invocations (futures) Yes 0.5

Not supported features
Feature Priority Assigned Requirements
Types and marshalling
Advanced primitive IDL types
  • wide char
  • wide string
  • fixed decimals
Value types medium (maia) Maia LuaIDL support
Other IDL types
  • Principal
  • Abstract interfaces
  • Native
IIOP 1.1 - 1.2 support medium (IME-USP) TheĆ³philo
Firewall bypass support medium (IME-USP) TheĆ³philo
Object references
Initial References
corbaname URLs
FTP URLs (optional)
HTTP URLs (optional)
ORB and servants
POA manament and policies
CORBA Services
Trading service
Event service
Notification service
Dynamic proxies
_is_nil basic operation

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

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