[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.