ILU 2.0alpha14 Reference Manual
Bill Janssen
<
[email protected]
>
Mike Spreitzer
<
[email protected]
>
Dan Larner
<
[email protected]
>
Chris Jacobi
<
[email protected]
>
ILU Concepts
What ILU Does
How ILU Works
Core ILU Concepts
Objects
Kernel Servers
Subtyping (interface inheritance)
Subtype Relationships
Singleton Object Types
Instantiation
String Binding Handle
Siblings
Object Tables (or, Just-in-Time Objects)
Server Relocation
Garbage Collection
Connections
Pipelining
Call Order Preservation
Batching
Simple Binding
Error Signalling
ILU and OMG CORBA
Defining Interfaces
General Syntax of ISL
Identifiers
Reserved Words
Statement Syntax
The Interface Header
Interface Directives
Type Declarations
Primitive types
Constructor overview
Array Declarations
Sequence Declarations
Generalized Array Declarations
Record Declarations
Union Declarations
Optional Declarations
Enumeration Declarations
Object Type Declarations
Fixed-point Declarations
Exception Declarations
Constant Declarations
Integer, Cardinal, and Byte Constants
Real Constants
ilu.CString Constants
Examples of Constants
ilu.isl
Using OMG IDL with ILU
Translation
Anonymous types
Topmodules mode
Imports mode
Unsupported constructs
Manual Invocation of
idl2isl
ISL Grammar
Using ILU with Standard C
Introduction
The ISL Mapping to C
Names
Interface
Basic Types
Constants
Strings and Characters
Pickles and Typecodes
Constructed Types
Enumeration
Array
Sequence
Record
Union
Optional
Object Types
Surrogate and True Objects
Interface Inheritance
Accessing the String Binding Handle, IOR, or Object ID
Distinguishing Between Local and Remote Instances
Object Implementation
Methods
Parameter Passing Considerations
Exceptions
Garbage Collection of C Instances
Issues in Mapping OMG IDL to C
Access to Standard ILU Features
Servers and Ports
Object Tables
Server Relocation
Threading and Event Loops
Custom Records
Custom Surrogates
String Binding Handle Formation
Simple Binding
Identities and Passports
Pipelining in C
Call Order Preservation in C
Batching in C
Building C/ILU Applications
Using the ILU C Stubber
Command-line Options
Tailoring Identifier Names
Using ILU Modules From C
Implementing an ILU Module With C
Libraries and Linking
ILU C API
General
Type Manipulation
Object Manipulation
Identity Functions
Call Management Functions in C
Server Manipulation
CORBA Compatibility Macros
Using ILU with Python
Introduction
The ISL Mapping to Python
Names
Interface
Basic Types
Constant
Strings
Pickles and Typecodes
Constructed Types
Enumeration
Array
Sequence
Record
Union
Optional
Object Types
Surrogate and True Object Types
Methods, Parameters, and Exceptions
Garbage Collection and COLLECTIBLE
Access to standard ILU features
Servers and Ports
Object Tables
Server Relocation
Threading and Event Loops
Animating Servers
Using Alarms
Custom Records
String Binding Handle Formation
Simple Binding
Principal Identities and Passports
Building Python/ILU Applications
Stub Generation
Command-line Options
Implementing an ILU module in Python
Implementation Inheritance
Exporting Objects
Using an ILU module in Python
CORBA Support in Python
Freezing a Python Application Containing ILU
Python/ILU API Reference
Identifiers Exported From Module
ilu
Identifiers Exported from the
CORBA
Module
Methods and Attributes of ILU Objects
Using ILU with CORBA 2.0 C++
Warning
Introduction
Mapping ILU ISL to C++
ISL to IDL Correspondences
ISL Specific Mappings
Correspondence between C++ Types and Kernel Types
C++ Classes Produced for an Object
Misc. Mapping Details
Unions
Optionals
Exceptions
ISL Asynchronous Methods
ISL Functional Methods
ISL Collectible Objects
Inheritence from CORBA::Object
Portability and Mapping Variations
Concepts
Servers and Ports
Object Tables
Threading
Custom Surrogates
String Binding Handle Manipulation
Simple Binding
Object Activation
Security
Static Initialization
Building an Application
Running the Stubber
Stubber Generated Files
Server Basics
Client Basics
Relevant examples
Runtime Classes
Overview
iluCppRuntime
iluCppRuntime - Initialization Related
iluCppRuntime - Character Utilities
iluCppRuntime - String Binding Handle Utilities
iluCppRuntime - File Descriptor Budget
iluCppRuntime - Memory Management
iluServer
iluServer - Setup and Destruction
iluServer - Default Accessors
iluObject
iluObject - Creation and Destruction
iluObject - Object Publication
iluObject - Accessors
iluObject - Informational
iluObject - Reference Counting
iluObjectTable
iluPassport
iluGSS
iluMainLoop
CORBA 2.0 C++ Considerations
ORB_init
Using ILU with C++
Introduction
Mapping ILU ISL to C++
Names
Types
Sequence types
Object types
Exceptions
Constants
Examples
Using an ILU module from C++
Implementing an ILU Module in C++
Servers
Event dispatching
Publishing
ILU API for C++
Generating ILU stubs for C++
Tailoring C++ Names
Threading
Other ILU Considerations For C++
Libraries and Linking
Initialization order
Makefiles
Using ILU with Java
Introduction
ILU and CORBA
The ISL Mapping to Java
Names
Interfaces
Basic Types
Constant
Strings
Pickles and Typecodes
Constructed Types
About Java Object serialization
Enumeration
Array
Sequence
Record
Union
Optional
Object Types
Surrogate and True Object Types
Methods, Parameters, and Exceptions
Java Garbage Collection, Distributed Garbage Collection, and/or COLLECTIBLE
Java serialization
How to make your idl Java friendly
Access to standard ILU features
Servers and Ports
True Servers
Object Tables
Threading and Event Loops
Custom Records
Custom Surrogates
String Binding Handle Formation
Simple Binding
Principal Identities and Passports
Building ILU-for-Java Applications
Stub Generation
Problems and Solutions
Java Compilation
Execution
Debugging
Debugging native ILU code
Implementing an ILU module in Java
Hints about implicit registration
Java's single inheritance classes.
Notes for ILU for Java in applets
Notes for Java on particular architectures
Notes for Java on Windows
Notes for Java on Linux
Native threads versus green threads
JNI versus ONI vesus RNI
Java releases
CosNaming
CosNaming Naming Server
Bootstrapping with CosNaming
ILU for Java Reference
javadoc documentation
Build of the javadoc documentation
Description of Java classes
CORBA Exceptions
Holder classes
CORBA classes
Basic environment classes
ILU exceptions
ILU public classes
Internal or esoteric classes
Full Custom Mapping
Stubbing
Runtime features
Java objects by value, Java marshalled objects
Interoperability of Java objects by value, Java marshalled objects
Using ILU with Common Lisp
Introduction
The ISL Mapping to Common Lisp
Names
Interface
Basic Types
Constant
Strings
Pickles and Typecodes
Constructed Types
Enumeration
Array
Sequence
Record
Union
Optional
Object Types
Surrogate and True Object Types
Methods, Parameters, and Exceptions
Garbage Collection and COLLECTIBLE
Access to standard ILU features
Servers and Ports
Object Tables
Server Relocation
Threading and Event Loops
Custom Records
Custom Surrogates
String Binding Handle Formation
Simple Binding
Principal Identities and Passports
Building Common Lisp/ILU Applications
Stub Generation
Implementing an ILU module in Common Lisp
Implementation Inheritance
Exporting Objects
Debugging
Using an ILU module in Common Lisp
Dumping an image with ILU
Notes for Microsoft Windows Users
Installation on the MS Windows platform
Allegro 3.0.1 Needs
ilu:run-main-loop
The Portable DEFSYSTEM Module
ILU Common Lisp Lightweight Processes
Porting ILU to a New Common Lisp Implementation
Common Lisp/ILU API Reference
Using ILU with Scheme (Guile)
Introduction
The ISL Mapping to Scheme
Names
Basic Types
Constant
Strings
Pickles and Typecodes
Constructed Types
Enumeration
Array
Sequence
Record
Union
Optional
Object Types
Surrogate and True Object Types
Methods, Parameters, and Exceptions
Garbage Collection and COLLECTIBLE
Access to standard ILU features
Servers and Ports
Object Tables
Threading and Event Loops
Custom Records
String Binding Handle Formation
Simple Binding
Principal Identities and Passports
Building Scheme/ILU Applications
Initialization order
ILU-YASOS
Where to get Guile 1.2 and SLIB
Stub Generation
Implementing an ILU module in Scheme
Implementation Inheritance
Exporting Objects
Using an ILU module in Scheme
Scheme/ILU API Reference
Using ILU with Microsoft Windows
Prerequisites for using ILU with Microsoft Windows
Using ILU applications on Windows NT and Windows 95
Prerequisite software to use AND develop ILU applications on Windows NT and 95.
Installation
Building ILU
Lisp
Java
Python
Building the examples
Running the examples
Developing Windows Applications with ILU
All Applications
Windows (non-console) Applications
Message Loop
Windows and the ILU_DEBUG settings
WINIO
Misc.
Python 1.4 support - details
Alternative Binding Service
Borland C
Files in the distribution
Binding Names in ILU
Introduction
ILU Simple Binding
Listing the Registered Objects
Using Shared Files for Simple Binding
Using an ILU Service for Simple Binding
CORBA CosNaming
Threads and Event Loops
Multi-Threaded Programs
Multi-Threaded Programming in C
Multi-Threaded Programming in Python
Multi-Threaded Programming in C++
Thread Synchronization
Single-Threaded Programs
ILU Main Loop Functional Spec
Using ILU's Default Main Loop
Using an External Main Loop
A Hybrid Aproach
Threadedness in Distributed Systems
Protocols and Transports
Protocols
The Abstract ILU Message Protocol
Messages
Parameter Types
The ONC RPC Protocol
Message Mappings
Mapping of Standard Types
The Xerox Courier Protocol
Message Mappings -- Courier Layer 3
Mapping of Standard Types -- Courier Layer 2
The OMG Internet Inter-Orb Protocol (IIOP)
Message Mappings -- GIOP
Mapping of Standard Types -- GIOP
The Hyper Text Transfer Protocol (
HTTP
)
The World Wide Web HTTP-NG Protocol (w3ng)
The Default Protocol and Transport
Transports
TCP
UDP
SunRPC Record Marking
World Wide Web Consortium MUX Transport
Generic Security Service (GSS)
Security
Identities
Communications Security
Kernel Servers
Creating Ports
Client Connections to Ports
Calls
Using the GSS Transport Filter
GSS Namespace Schemes
GSS Security Schemes
ILU Customization
Introduction
Event Loops and Threads
RPC Protocols and Data Transport Mechanisms
RPC Protocols
Transport Filters
Object Incarnation Procedures
Object URLs
Identity Types
Malloc Failure Recovery
Error Reporting
Debugging Interfaces
Debugging ILU Programs
C++ static instance initialization
ILU trace debugging
Debugging ISL
Use of
islscan
The ISLDEBUG environment variable
Bug Reporting and Comments
Use of
gdb
Error handling
Decoding reportable consistency check failures
Common Problems - Questions
Installation of ILU
Installing on a Windows NT or 95 System
Installing on a UNIX System
Prerequisites
Unpacking the Distribution
For the Impatient
Real Configuration
Configuration Options
Manual Fixups for Threading
Building
Environment Variables
Testing the Build
Notes on Specific Systems
AIX 4.2
HP/UX
DEC ALPHA with OSF OS
SunOS 4.1.x
Examples
Name Servers
Documentation
Mailing Lists
Changes
Changes from 2.0alpha13 to 2.0alpha14
Changes from 2.0alpha12 to 2.0alpha13
Changes from 2.0alpha11 to 2.0alpha12
Changes from 2.0alpha10 to 2.0alpha11
Changes from 2.0alpha9 to 2.0alpha10
Changes from 2.0alpha8 to 2.0alpha9
Changes from 2.0alpha7 to 2.0alpha8
Changes from 1.8 to 2.0alpha
Changes from 1.7 to 1.8
Changes from 1.6.4-p9 to 1.7
Bug Reporting and Comments
Known Bugs and Gotchas
Reporting Bugs
Multiple Languages In One Address Space
Dueling Runtimes
Module Initialization
Finding Objects
Using Imake with ILU
Creating
`Makefile'
s from
`Imakefile'
s
ANSI C Usage
ANSI C ILU
imake
Macros
C++ Usage
C++ ILU
imake
Macros
How to Create ILU Support for a Programming Language
Defining the Mapping
Object References
Storage Management
Control Flow
Any and TypeCode
Designing Runtime Operation
Writing the Stub Generator
Writing the LSR
Control Structure Options
The Main Sequence - How Calls are Handled on the Client and Server Sides
Object Management
Discussion
Life Cycle
Automatically Managed Objects
Explicitly Managed Objects
Hybrid Schemes
Server Management
Call-Specific MetaObjects
Errors
Internal Consistency Checks
Debugging
Fine Grain Time
FD Budget
Supporting Multiple Languages in One Runtime
Type Information
Simple Binding Service
Security Support
SBH schemes
Pickle Support
The Kernel Interface to Pickle
Pickles and the CORBA IIOP
The TIM Documentation Language
Introduction
Extensions to GNU Texinfo
TIM Domain-Independent Format
Defining Domain-Specific Markup Commands With @timmacro
TIM Tools
Markup Commands used with ILU
The ILU Common Lisp Portable DEFSYSTEM Module
Pathname Support
The ILU Common Lisp Lightweight Process System
Introduction
Overview Of The ILU CL Process Model
The Scheduler Process
States Of Processes
Removing Or Killing Processes
Properties Of Processes
Process Locks
Functional Overview
Implementation Architecture
General Limitations
How To Use The ILU CL Process Interface
How To Program The ILU CL Process Interface
The ILU CL Process Interface
The Process Object
Querying The Status Of The Scheduler And All Processes
Starting And Killing Processes
Waiting A Process
Activating And Deactivating Processes
Accessing And Modifying The Properties Of A Process
Miscellaneous Process/Scheduler Functions And Macros
Process Locks Interface
Handling Errors
Notes
References
Porting ILU to Common Lisp Implementations
Introduction
Providing the ILU notion of foreign-function calls.
Network Garbage Collection
Thread and/or Event Loops
Converting between character sets.
Support for Dynamic Object Creation
Algorithm for Generation of Structural-Hash Type IDs
Resolving Type Ambiguities
Constructing the "salient information string"
References to Types, Interfaces, and Exceptions
Definitions of Types, Interfaces, and Exceptions
Types
Alias Types
Array Types
Record Types
Optional Types
Fixed-point Types
Sequence Types
Union Types
Enumeration Types
Object Types
Interfaces
Exceptions
Brands
String Literals
Example
Calculation of the NIST SHS of the "salient information" String.
Conversion of the SHS to a Base-64 Number.
Possible ISL Name Mappings for Target Languages
C mapping
C++ mapping
Modula-3 mapping
Mapping ILU ISL to Modula-3
Names
Types
Exceptions
Example
Index of Concepts
Index of Functions, Variables, Methods, and Types