[Top] [Prev] [Next] [Bottom]

Table of Contents

0.1 About This Document
0.1.1 Object Management Group
0.1.2 X/Open
0.2 Intended Audience
0.3 Context of CORBA
0.4 Associated Documents
0.5 Structure of this Manual
0.6 Definition of CORBA Compliance
0.7 Typographical Conventions
0.8 Acknowledgements

1. The Object Model

1.1 Overview
1.2 Object Semantics
1.2.1 Objects
1.2.2 Requests
1.2.3 Object Creation and Destruction
1.2.4 Types
1.2.5 Interfaces
1.2.6 Operations
1.2.7 Attributes
1.3 Object Implementation
1.3.1 The Execution Model: Performing Services
1.3.2 The Construction Model

2. CORBA Overview

2.1 Structure of an Object Request Broker
2.1.1 Object Request Broker
2.1.2 Clients
2.1.3 Object Implementations
2.1.4 Object References
2.1.5 OMG Interface Definition Language
2.1.6 Mapping of OMG IDL to Programming Languages
2.1.7 Client Stubs
2.1.8 Dynamic Invocation Interface
2.1.9 Implementation Skeleton
2.1.10 Dynamic Skeleton Interface
2.1.11 Object Adapters
2.1.12 ORB Interface
2.1.13 Interface Repository
2.1.14 Implementation Repository
2.2 Example ORBs
2.2.1 Client- and Implementation-resident ORB
2.2.2 Server-based ORB
2.2.3 System-based ORB
2.2.4 Library-based ORB
2.3 Structure of a Client
2.4 Structure of an Object Implementation
2.5 Structure of an Object Adapter
2.6 Example Object Adapters
2.6.1 Basic Object Adapter
2.6.2 Library Object Adapter
2.6.3 Object-Oriented Database Adapter
2.7 The Integration of Foreign Object Systems

3. OMG IDL Syntax and Semantics

3.1 About This Chapter
3.2 Lexical Conventions
3.2.1 Tokens
3.2.2 Comments
3.2.3 Identifiers
3.2.4 Keywords
3.2.5 Literals
3.3 Preprocessing
3.4 OMG IDL Grammar
3.5 OMG IDL Specification
3.5.1 Module Declaration
3.5.2 Interface Declaration
3.6 Inheritance
3.7 Constant Declaration
3.7.1 Syntax
3.7.2 Semantics
3.8 Type Declaration
3.8.1 Basic Types
3.8.2 Constructed Types
3.8.3 Template Types
3.8.4 Complex Declarator
3.9 Exception Declaration
3.10 Operation Declaration
3.10.1 Operation Attribute
3.10.2 Parameter Declarations
3.10.3 Raises Expressions
3.10.4 Context Expressions
3.11 Attribute Declaration
3.12 CORBA Module
3.13 Names and Scoping
3.14 Differences from C++
3.15 Standard Exceptions
3.15.1 Standard Exceptions Definitions
3.15.2 Object Non-Existence

4. Dynamic Invocation Interface

4.1 Overview
4.1.1 Common Data Structures
4.1.2 Memory Usage
4.1.3 Return Status and Exceptions
4.2 Request Operations
4.2.1 create_request
4.2.2 add_arg
4.2.3 invoke
4.2.4 delete
4.3 Deferred Synchronous Operations
4.3.1 send
4.3.2 send_multiple_requests
4.3.3 get_response
4.3.4 get_next_response
4.4 List Operations
4.4.1 create_list
4.4.2 add_item
4.4.3 free
4.4.4 free_memory
4.4.5 get_count
4.4.6 create_operation_list
4.5 Context Objects
4.6 Context Object Operations
4.6.1 get_default_context
4.6.2 set_one_value
4.6.3 set_values
4.6.4 get_values
4.6.5 delete_values
4.6.6 create_child
4.6.7 delete
4.7 Native Data Manipulation

5. Dynamic Skeleton Interface

5.1 Overview
5.2 Explicit Request State: ServerRequest Pseudo Object
5.3 Dynamic Skeleton Interface: Language Mapping
5.3.1 ServerRequest's Handling of Operation Parameters
5.3.2 Registering Dynamic Implementation Routines

6. The Interface Repository

6.1 Overview
6.2 Scope of an Interface Repository
6.3 Implementation Dependencies
6.3.1 Managing Interface Repositories
6.4 Basics of the Interface Repository Interface
6.4.1 Names and Identifiers
6.4.2 Types and TypeCodes
6.4.3 Interface Objects
6.4.4 Structure and Navigation of Interface Objects
6.5 Interface Repository Interfaces
6.5.1 Supporting Type Definitions
6.5.2 IRObject
6.5.3 Contained
6.5.4 Container
6.5.5 IDLType
6.5.6 Repository
6.5.7 ModuleDef
6.5.8 ConstantDef Interface
6.5.9 TypedefDef Interface
6.5.10 StructDef
6.5.11 UnionDef
6.5.12 EnumDef
6.5.13 AliasDef
6.5.14 Read Interface
6.5.15 PrimitiveDef
6.5.16 StringDef
6.5.17 SequenceDef
6.5.18 ArrayDef
6.5.19 ExceptionDef
6.5.20 AttributeDef
6.5.21 OperationDef
6.5.22 InterfaceDef
6.6 RepositoryIds
6.6.1 OMG IDL Format
6.6.2 DCE UUID Format
6.6.3 LOCAL Format
6.6.4 Pragma Directives for RepositoryId
6.7 TypeCodes
6.7.1 The TypeCode Interface
6.7.2 TypeCode Constants
6.7.3 Creating TypeCodes
6.8 OMG IDL for Interface Repository

7. ORB Interface

7.1 Converting Object References to Strings
7.2 Object Reference Operations
7.2.1 Determining the Object Implementation and Interface
7.2.2 Duplicating and Releasing Copies of Object References
7.2.3 Nil Object References
7.2.4 Equivalence Checking Operation
7.2.5 Probing for Object Non-Existence
7.2.6 Object Reference Identity
7.3 Overview: ORB and OA Initialization and Initial References
7.4 ORB Initialization
7.5 OA and BOA Initialization
7.6 Obtaining Initial Object References

8. The Basic Object Adapter

8.1 Role of the Basic Object Adapter
8.2 Basic Object Adapter Interface
8.2.1 Registration of Implementations
8.2.2 Activation and Deactivation of Implementations
8.2.3 Generation and Interpretation of Object References
8.2.4 Authentication and Access Control
8.2.5 Persistent Storage
Appendix A Standard OMG IDL Types

9. Interoperability Overview

9.1 Elements of Interoperability
9.1.1 ORB Interoperability Architecture
9.1.2 Inter-ORB Bridge Support
9.1.3 General Inter-ORB Protocol (GIOP)
9.1.4 Internet Inter-ORB Protocol (IIOP)
9.1.5 Environment-Specific Inter-ORB Protocols (ESIOPs)
9.2 Relationship to Previous Versions of CORBA
9.3 Examples of Interoperability Solutions
9.3.1 Example 1
9.3.2 Example 2
9.3.3 Example 3
9.3.4 Interoperability Compliance
9.4 Motivating Factors
9.4.1 ORB Implementation Diversity
9.4.2 ORB Boundaries
9.4.3 ORBs Vary in Scope, Distance, and Lifetime
9.5 Interoperability Design Goals
9.5.1 Non-Goals

10. ORB Interoperability Architecture

10.1 Overview
10.1.1 Domains
10.1.2 Bridging Domains
10.2 ORBs and ORB Services
10.2.1 The Nature of ORB Services
10.2.2 ORB Services and Object Requests
10.2.3 Selection of ORB Services
10.3 Domains
10.3.1 Definition of a Domain
10.3.2 Mapping Between Domains: Bridging
10.4 Interoperability Between ORBs
10.4.1 ORB Services and Domains
10.4.2 ORBs and Domains
10.4.3 Interoperability Approaches
10.4.4 Policy-Mediated Bridging
10.4.5 Configurations of Bridges in Networks
10.5 Object Addressing
10.5.1 Domain-relative Object Referencing
10.5.2 Handling of Referencing Between Domains
10.6 An Information Model for Object References
10.6.1 What Information do Bridges Need?
10.6.2 Interoperable Object References: IORs
10.6.3 Profile and Component Composition in IORs
10.6.4 IOR Creation and Scope
10.6.5 Stringified Object References
10.6.6 Object Service Context

11. Building Inter-ORB Bridges

11.1 In-Line and Request-Level Bridging
11.1.1 In-line Bridging
11.1.2 Request-level bridging
11.1.3 Collocated ORBs
11.2 Proxy Creation and Management
11.3 Interface-specific Bridges and Generic Bridges
11.4 Building Generic Request-Level Bridges
11.5 Bridging Non-Referencing Domains
11.6 Bootstrapping Bridges

12. General Inter-ORB Protocol

12.1 Goals of the General Inter-ORB Protocol
12.2 General Inter-ORB Protocol Overview
12.2.1 Common Data Representation (CDR)
12.2.2 GIOP Message Overview
12.2.3 GIOP Message Transfer
12.3 CDR Transfer Syntax
12.3.1 Primitive Types
12.3.2 OMG IDL Constructed Types
12.3.3 Encapsulation
12.3.4 Pseudo-Object Types
12.3.5 Object References
12.4 GIOP Message Formats
12.4.1 GIOP Message Header
12.4.2 Reply Message
12.4.3 CancelRequest Message
12.4.4 LocateRequest Message
12.4.5 LocateReply Message
12.4.6 CloseConnection Message
12.4.7 MessageError Message
12.5 GIOP Message Transport
12.5.1 Connection Management
12.5.2 Message Ordering
12.6 Object Location
12.7 Internet Inter-ORB Protocol (IIOP)
12.7.1 TCP/IP Connection Usage
12.7.2 IIOP IOR Profiles
12.8 OMG IDL for the GIOP and IIOP Specifications
12.8.1 GIOP Module
12.8.2 IIOP Module

13. The DCE ESIOP

13.1 Goals of the DCE Common Inter-ORB Protocol
13.2 DCE Common Inter-ORB Protocol Overview
13.2.1 DCE-CIOP RPC
13.2.2 DCE-CIOP Data Representation
13.2.3 DCE-CIOP Messages
13.2.4 Interoperable Object Reference (IOR)
13.3 DCE-CIOP Message Transport
13.3.1 Pipe-based Interface
13.3.2 Array-based Interface
13.4 DCE-CIOP Message Formats
13.4.1 DCE_CIOP Invoke Request Message
13.4.2 DCE-CIOP Invoke Response Message
13.4.3 DCE-CIOP Locate Request Message
13.4.4 DCE-CIOP Locate Response Message
13.5 DCE-CIOP Object References
13.5.1 DCE-CIOP String Binding Component
13.5.2 DCE-CIOP Binding Name Component
13.5.3 DCE-CIOP No Pipes Component
13.5.4 Object Key Component
13.5.5 Endpoint ID Component
13.5.6 Location Policy Component
13.6 DCE-CIOP Object Location
13.6.1 Location Mechanism Overview
13.6.2 Activation
13.6.3 Basic Location Algorithm
13.6.4 Use of the Location Policy and the Endpoint ID
13.7 OMG IDL for the DCE CIOP Module
13.8 References for this Chapter
Appendix B OMG IDL Tags

14. C Language Mapping

14.1 Requirements for a Language Mapping
14.1.1 Basic Data Types
14.1.2 Constructed Data Types
14.1.3 Constants
14.1.4 Objects
14.1.5 Invocation of Operations
14.1.6 Exceptions
14.1.7 Attributes
14.1.8 ORB Interfaces
14.2 Scoped Names
14.3 Mapping for Interfaces
14.4 Inheritance and Operation Names
14.5 Mapping for Attributes
14.6 Mapping for Constants
14.7 Mapping for Basic Data Types
14.8 Mapping Considerations for Constructed Types
14.9 Mapping for Structure Types
14.10 Mapping for Union Types
14.11 Mapping for Sequence Types
14.12 Mapping for Strings
14.13 Mapping for Arrays
14.14 Mapping for Exception Types
14.15 Implicit Arguments to Operations
14.16 Interpretation of Functions with Empty Argument Lists
14.17 Argument Passing Considerations
14.18 Return Result Passing Considerations
14.19 Summary of Argument/Result Passing
14.20 Handling Exceptions
14.21 Method Routine Signatures
14.22 Include Files
14.23 Pseudo-objects
14.24 Mapping of the Dynamic Skeleton Interface to C
14.24.1 Mapping of ServerRequest to C
14.24.2 Mapping of BOA's Dynamic Implementation Routine to C
14.25 BOA: Mapping for Object Implementations
14.25.1 Operation-specific Details
14.25.2 Method Signatures
14.25.3 Binding Methods to Skeletons
14.25.4 BOA and ORB Operations
14.26 ORB and OA/BOA Initialization Operations
14.27 Operations for Obtaining Initial Object References

15. C++ Mapping Overview

15.1 Key Design Decisions
15.1.1 Compliance
15.1.2 C++ Implementation Requirements
15.1.3 C Data Layout Compatibility
15.1.4 No Implementation Descriptions
15.2 Organization of the C++ Mapping

16. Mapping of OMG IDL to C++

16.1 Preliminary Information
16.1.1 Scoped Names
16.1.2 C++ Type Size Requirements
16.1.3 CORBA Module
16.1.4 Mapping Modules
16.2 Mapping for Interfaces
16.2.1 Object Reference Types
16.2.2 Widening Object References
16.2.3 Object Reference Operations
16.2.4 Narrowing Object References
16.2.5 Nil Object Reference
16.2.6 Interface Mapping Example
16.3 Mapping for Constants
16.4 Mapping for Basic Data Types
16.5 Mapping for Enums
16.6 Mapping For String Types
16.7 Mapping for Structured Types
16.7.1 T_var Types
16.8 Mapping for Struct Types
16.9 Mapping for Union Types
16.10 Mapping for Sequence Types
16.10.1 Sequence Example
16.10.2 Using the "release" Constructor Parameter
16.10.3 Additional Memory Management Functions
16.10.4 Sequence T_var Type
16.10.5 Mapping For Array Types
16.11 Mapping For Typedefs
16.12 Mapping for the Any Type
16.12.1 Handling Typed Values
16.12.2 Insertion into Any
16.12.3 Extraction From Any
16.12.4 Distinguishing boolean, octet, and char
16.12.5 Handling Untyped Values
16.12.6 Any Constructors, Destructor, Assignment Operator
16.12.7 The Any Class
16.12.8 The Any_var Class
16.13 Mapping for Exception Types
16.14 Mapping For Operations and Attributes
16.15 Implicit Arguments to Operations
16.16 Argument Passing Considerations
16.17 Mapping of Dynamic Skeleton Interface to C++
16.17.1 Mapping of ServerRequest to C++
16.17.2 Mapping of BOA's Dynamic Implementation Routine

17. Mapping of Pseudo Objects to C++

17.1 Usage
17.2 Mapping Rules
17.3 Relation to the C PIDL Mapping
17.4 Environment
17.4.1 Environment Interface
17.4.2 Environment C++ Class
17.4.3 Differences from C-PIDL
17.5 NamedValue
17.5.1 NamedValue Interface
17.5.2 NamedValue C++ Class
17.5.3 Differences from C-PIDL
17.6 NVList
17.6.1 NVList Interface
17.6.2 NVList C++ Class
17.6.3 Differences from C-PIDL
17.7 Request
17.7.1 Request Interface
17.7.2 Request C++ Class
17.7.3 Differences from C-PIDL
17.8 Context
17.8.1 Context Interface
17.8.2 Context C++ Class
17.8.3 Differences from C-PIDL
17.9 Principal
17.9.1 Principal Interface
17.9.2 Principal C++ Class
17.10 TypeCode
17.10.1 TypeCode Interface
17.10.2 TypeCode C++ Class
17.10.3 Differences from C-PIDL
17.11 BOA
17.11.1 BOA Interface
17.11.2 BOA C++ Class
17.11.3 Differences from C-PIDL
17.12 ORB
17.12.1 ORB Interface
17.12.2 ORB C++ Class
17.12.3 Differences from C-PIDL
17.12.4 Mapping of ORB and OA/BOA Initialization Operations
17.12.5 Mapping of Operations to Obtain Initial Object References
17.13 Object
17.13.1 Object Interface
17.13.2 Object C++ Class

18. Server-Side Mapping

18.1 Implementing Interfaces
18.2 Implementing Operations
18.3 Examples
18.3.1 Using C++ Inheritance for Interface Implementation
18.3.2 Using Delegation for Interface Implementation
Appendix C C++ Definitions for CORBA
Appendix D Alternative Mappings For C++ Dialects
Appendix E C++ Keywords

19. Smalltalk Mapping Overview

19.1 Key Design Decisions
19.1.1 Consistency of Style, Flexibility and Portability of Implementation
19.2 Organization of the Smalltalk Mapping
19.3 Glossary of Terms
19.4 Implementation Constraints
19.4.1 Avoiding Name Space Collisions
19.4.2 Limitations on OMG IDL Types
19.5 Smalltalk Implementation Requirements

20. Mapping of OMG IDL to Smalltalk

20.1 Mapping Summary
20.2 Conversion of Names to Smalltalk Identifiers
20.3 Mapping for Interfaces
20.4 Memory Usage
20.5 Mapping for Objects
20.6 Invocation of Operations
20.7 Mapping for Attributes
20.7.1 Mapping for Constants
20.8 Mapping for Basic Data Types
20.9 Mapping for the Any Type
20.10 Mapping for Enums
20.11 Mapping for Struct Types
20.12 Mapping for Union Types
20.12.1 Implicit Binding
20.12.2 Explicit Binding
20.13 Mapping for Sequence Types
20.14 Mapping for String Types
20.15 Mapping for Array Types
20.16 Mapping for Exception Types
20.17 Mapping for Operations
20.18 Implicit Arguments to Operations
20.19 Argument Passing Considerations
20.20 Handling Exceptions
20.20.1 Exception Values
20.20.2 The CORBAExceptionValue protocol

21. Mapping of Pseudo Objects to Smalltalk

21.1 CORBA::Request
21.2 CORBA::Context
21.3 CORBA::Object
21.4 CORBA::ORB
21.5 CORBA::NamedValue
21.6 CORBA::NVList
Appendix F Glossary


[Top] [Prev] [Next] [Bottom]

pubs@omg.org
Copyright © 1995, Object Management Group. All rights reserved.