ILU Reference Manual
Bill Janssen
<janssen@parc.xerox.com>
Mike Spreitzer
<spreitzer.parc@xerox.com>
ILU Concepts
What ILU Does
How ILU Works
Core ILU Concepts
Objects
Subtyping (interface inheritance)
Subtype Relationships
Singleton Object Types
Instantiation
String Binding Handle
Siblings
Object Tables (or, Just-in-Time Objects)
Garbage Collection
Connections
Simple Binding
Listing the Registered Objects
Using Shared Files for Simple Binding
Using an ILU Service for Simple Binding
Error Signalling
ILU and OMG CORBA
Defining Interfaces
General Syntax of ISL
Identifiers
Reserved Words
Statement Syntax
The Interface Header
Type Declarations
Primitive types
Constructor overview
Array Declarations
Sequence Declarations
Generalized Array Declarations
Record Declarations
Union Declarations
Optional Declarations
Enumeration Declarations
Object Type 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
Mapping Type Constructs Into C
Basic Types
Records
Unions
Floating Point Values
Sequences
Pickles (CORBA `any')
Objects and Methods
Basics
Interface Inheritance
Object Implementation
Exceptions
Parameter Passing Considerations
True Module Construction
Using ILU Modules
Stub Generation
Tailoring Identifier Names
Libraries and Linking
ILU C API
Type Manipulation
Object Manipulation
Server Manipulation
Using C Object Tables
CORBA Compatibility Macros
Using ILU with Python
Introduction
The ISL Mapping to Python
Names
Interface
Constant
Exception
Types
Basic Types
Enumeration
Array
Sequence
Record
Union
Object
Optional
Pickle (CORBA `any')
Methods and Parameters
Threads
Identities
Using an ILU module from Python
Implementing an ILU module in Python
Implementation Inheritance
True Servers
Exporting Objects
Animating Servers
Using Alarms
Using the Simple Binding Service
Summary of the ILU Python Runtime
Stub Generation
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
The ISL Mapping to Java
Using an ILU module from Java
Client side substitutions
Implementing an ILU module in Java
Hints about implicit registration
True Servers
Directories, Packages, and Modules
Java without ILU
Summary
ILU enters the picture
Stubbing
Java Compilation
Execution
Debugging
Packages
Versions, releases, and, machines
Stub Generation
Using the Simple Binding Service
Using ILU with Common Lisp
ILU Mappings to Common Lisp
Generating Common Lisp Surrogate and True Stubs
Packages & Symbols
Types
Using a Module from Common Lisp
Implementing a Module in Common Lisp
Publishing
Debugging
Dumping an image with ILU
The Portable DEFSYSTEM Module
ILU Common Lisp Lightweight Processes
Porting ILU to a New Common Lisp Implementation
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
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 support.
Alternative Binding Service
Borland C
Files in the distribution
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
)
Transports
TCP
UDP
SunRPC Record Marking
In-Memory
Security
Security
Identities
Communications Security
Kernel Servers
Creating Ports
Client Connections to Ports
Calls
Using the Secure Transport Filter
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 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
HP/UX
DEC ALPHA with OSF OS
SunOS 4.1.x
Examples
Name Servers
Documentation
Mailing Lists
Changes
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
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
Porting ILU to Common Lisp
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
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