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
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 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 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 ANSI C
Introduction
The ISL Mapping to ANSI C
Names
Mapping Type Constructs Into ANSI C
Basic Types
Records
Unions
Floating Point Values
Sequences
Objects and Methods
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 Modula-3
Mapping ILU ISL to Modula-3
Names
Types
Exceptions
Example
Importing an ILU interface in Modula-3
Exporting an ILU interface in Modula-3
ILU API for Modula-3
Simple Binding
Generating ILU stubs for Modula-3
Libraries and Linking
Using ILU with Python
Introduction
The ISL Mapping to Python
Names
Interface
Constant
Exception
Types
Basic Types
Enumeration
Array
Sequence
Record
Union
Object
Optional
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 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.
Prerequisite software to use ILU applications on Windows 3.1
Prerequisite software to use AND develop ILU applications on Windows 3.1
Installation
Building ILU
Building the examples
Running the examples
Developing Windows Applications with ILU
Running the stubbers
Console Applications (Windows NT only)
Windows Applications
WINIO
Windows - NT Specific
Windows - 3.1 Specific
Message Loop
Files in the distribution
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
Threads and Event Loops
Multi-Threaded Programs
Multi-Threaded Programming in C
Multi-Threaded Programming in C++
Switching the Runtime Kernel to Multi-Threaded Operation
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
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
Installation of ILU
Installing on a UNIX System
Prerequisites
Unpacking the Distribution
For the Impatient
Real Configuration
configure
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.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
Modula-3 Usage
Modula-3 ILU
imake
Macros
The TIM Documentation Language
TIM
TIM Tools
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
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
Index of Concepts
Index of Functions, Variables, and Types