Information technology — Open Systems Interconnection — Remote Procedure Call (RPC)

Facilitates the specification and development of distributed applications based on extending the well-known remote procedure call paradigm to operate between application processes on two separate real open systems in the OSI environment.

Technologies de l'information — Interconnexion de systèmes ouverts (OSI) — Appel de procédures à distance (RPC)

General Information

Status
Published
Publication Date
25-Dec-1996
Current Stage
9093 - International Standard confirmed
Start Date
13-Aug-2001
Completion Date
19-Apr-2025
Ref Project
Standard
ISO/IEC 11578:1996 - Information technology -- Open Systems Interconnection -- Remote Procedure Call (RPC)
English language
570 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)


INTERNATIONAL ISO/IEC
STANDARD
First edition
1996-12-15
Information technology - Open Systems
Interconnection - Remote Procedure Cal1
(RW
Interconnexjon de systemes ouverts
Technologies de I ‘in forma tion -
(OS/) - Appel de procedures 2 distance (RPC)
Reference number
ISO/IEC 11!578:1996(E)
Contents
Section 1 General
11 Scope
1:2 Normative references
1.3 Informative References
1.4 Definitions
1.4.1 Reference model definitions
1.4.2 Application Layer Structure definitions
1.4.3 Service conventions definitions
1.5 Abbreviations
Portability
1.6
Services and Protocols 9
1.7
Conformance Requirements IO
1.8
Introduction to the RPC API 13
Section 2
21 RPC Programming Model Overview
2:1.1 CIienVServer Model
2.1.1.1 Interfaces
2.1.1.2 Remoteness
2.1.1.3 Binding
2.1.1.4 Name Services
2.1.1.5 Resource Models
2.1.1.6 Security Services
2.1.1.7 Server lmplementation
Application/Stub/Run-time System
2.1.2
RPC Run Time
2.1.2.1
2.1.2.2 Stubs
2.1.2.3 Application Code
2.2 API Operations
2.2.1 Binding-related Operations
2.2.2 Name Service Operations
2.2.3 Endpoint Operations
2.2.4 Security Operations
Stub Memory Management Operations 19
2.2.5
2.2.6 Management Operations
2.2.7 UUID Operations
2.3 Binding
2.3.1 Binding Handles
2.3.1.1 Client and Server Binding Handles
2.3.1.2 Obtaining Binding Handles
2.3.2 String Bindings
2.3.3 Binding Steps
2.3.3.1 Server Binding Steps
2.3.3.2 Client Binding Steps
2.3.3.3 Cal1 Routing Algorithms
2.3.4 Binding Methods
0 ISO/IEC 1996
All rights reserved. Unless otherwise specified, no part of thrs publication may be repro-
duced or utilized in any form or by any means, electronrc or mechanrcal, rncluding photo-
copying and microfilm, without permtssron In wntlng from the publisher.
ISO/IEC Copyright Office l Case postale 56 l CH-1 211 Geneve 20 l Swrtzerland
Printed in Switzerland
0 ISO/IEC
2.4 Name Service Interface 30
2.4.1 Name Service Model 30
Name Syntax Tags 30
2.4.2
Name Service Attributes 31
2.4.3
Server Entries 31
2.4.3.1
2.4.3.2 Group Entries
2.4.3.3 Profiles
2.4.4 Binding Searches
2.4.5 Search Algorithm
2.4.6 Name Service Caching
2.5 Server Model
2.5.1 Server Concurrency and Request Buffering
2.5.2 Management Interface 35
2.6 Server Resource Models 36
2.6.1 The Server-Oriented Model 36
2.6.2 The Service-Oriented Model 36
2.6.3 The Object-Oriented Model 36
2.7 Secu rity 37
2.8 Error Handling 37
2.9 Cancel Notification 37
2.10 Stubs 39
2.10.1 IDL to Stub Data Type Mappings 39
2.10.2 Manager EPVs 39
2.10.3 Interface Handles 39
2.10.4 Stub Memory Management 39
2.11 RPC API Routine Taxonomy 40
2.11.1 Binding Operations 40
2.11.2 Interface Operations 40
2.11.3 Protocol Sequence Operations 41
2.11.4 Local Endpoint Operations 41
Object Operations 41
2.11.5
Name Service Interface Operations 42
2.11.6
NSI Binding Operations 42
2.11.6.1
NSI Entry Operations 42
2.11.6.2
2.11.6.3 NSI Group Operations
NSI Profile Operations 43
2.11.6.4
2.11.7 Authentication Operations
2.11.8 The Server Listen Operation
2.11.9 The String Free Operation
2.11 .lO UUID Operations
2.11 .ll Stub Memory Management
2.11.12 Endpoint Management Operations
2.11.13 Name Service Management Operations
2.11.14 Local Management Services 45
2.11.15 Local/Remote Management Services 45
2.11.16 Error Messages 45
RPC API Manual Pages 47
Section 3
3.1 RPC Data Types 47
3.1 .l Unsigned Integer Types 47
3.1.2 Signed Integer Type 47
3.1.3 Unsigned Character String 47
3.1.4 Binding Handle 48
3.1.5 Binding Vector 49
Boolean Type 49
3.1.6
3.1.7 Endpoint Mag Inquiry Handle 49
Interface Handle 50
3.1.8
3.1.9 Interface tidentifier 50
3.1.10 Interface Identifier Vector 51
3.1.11 Manager Entry Point Vector 51

ISCMEC 11578:1996(E)
0 ISOAEC
3.1.12 Name Service Handle
3.1.13 Protocol Sequence String
3.1.14 Protocol Sequence Vector
3.1.15 Statistics Vector
3.1.16 String Binding
3.1.17 String UUID
3.1.18 UUIDs
3.1.19 UUID Vector
rpc-binding-copy()
rpc-binding-free()
rpc-binding-from-string-binding ( )
rpc-binding-inqauth-client ( )
rpc-binding-inq-auth-info()
rpc-binding-inq-Object ( )
rpc-binding-reset ( ) 64
rpc-binding-serverfrom-client ( ) 65
rpc-binding-set-auth-info ( ) 66
rpc-binding-Set-Object ( ) 68
rpc-binding-to-string-binding ( ) 69
rpc-binding-vector-free ( ) 70
rpc-ep-register ( ) 71
rpc-ep-register-no-replace ( ) 74
rpc-ep-resolve-binding ( ) 76
rpc-ep-Unregister ( )
rpc-if-id-vector-free ( )
rpc-if-inq-id ( )
rpc~mgmt~ep~elt~inq~begin ( )
rpc~mgmt~ep~elt~inq~done ( )
rpc~mgmt~ep~elt~inq~next ( )
rpc-mgmt-ep-Unregister ( )
rpc~mgmt~inq~com~timeout ()
rpc~mgmt~inq~dfIt~protect~level( )
rpc-mgmt-inq-if-ids ( )
rpc~mgmt~inq~server~princ_name ( )
rpc-mgmt-inq-stats ( )
rpc~mgmt~is~server~listening ( ) 97
rpc-mgmt-set-authorizationfn () 99
rpc~mgmt~set~cancel~timeout ( ) 101
rpc-mgmt-set-comfimeout ( ) 102
rpc-mgmt-set-server-Stack-size ( ) 104
rpc-mgmt-stats-vector-free ( ) 105
rpc-mgmt-stop-server-listening ( ) 106
rpc-network-inq-protseqs ( ) 107
rpc-network-is-protseq-valid ( )
rpc-ns-binding-export ( )
rpc-ns-binding-import-begin ()
rpc-ns-binding-import-done ( )
rpc-ns-binding-import-next ()
rpc-ns-binding-inq-entry-name ( )
rpc-ns-binding-lookup-begin ( )
rpc-ns-binding-lookup-done()
rpc-ns-binding-lookup-next ( )
rpc-ns-binding-select ( )
rpc-ns-binding-unexport ( )
rpc-ns-entry-expand-name ( )
rpc-nsentry-inq-resojution ( )
rpc-ns-entry-Object-inq-begin ( )
rpc-nsentry-Object-inq-done ( )
rpc-ns-entry-Object-inq-next ( )
0 ISO/IE@ ISWIEC 11578:1996(E)
rpc-ns-group-delete ( )
rpc-ns-group-mbr-add ( )
rpc-ns-group-mbr-inq-begin ( )
rpc-ns-group-mbr-inq-done ( )
rpc---ns-group-mbr-inq-next ( ) 142
rpc-ns-group-mbr-remove() 144
rpc-ns-mgmt-binding-unexport ( ) 146
rpc-ns-mgmt-entry-create ( ) 149
rpc-ns-mgmtentry-delete ( ) 150
rpc-ns-mgmtentry-inq-if-ids ( ) 151
rpc-ns-mgmt-handle-setexp_age() 153
rpc~ns~mgmt~inq~exp~age() 154
rpc-ns-mgmt-set-exp-age( ) 156
rpc-ns-Profile-delete() 158
rpc-ns-Profile-elt-add ( ) 159
rpc-ns-Profile-elt-inq-begin ( ) 161
rpc-ns-Profile-elt-inq-done ( ) 164
rpc~ns~profile~elt~inq~next ( ) 165
rpc~ns~profile~elt~remove ( ) 167
rpc-Object-inqfype ( ) 169
rpc-Object-set-inq-fn ( ) 171
rpc-Object-setfype ( ) 172
rpc-protseq-vectorfree ( ) 174
rpc-server-inq-bindings ( )
rpc-server-inq-if ( ) 177
rpc-server-listen ( )
rpc-server-register-auth-info ( )
rpc-server-register-if ( ) 182
rpc-server-unregister-if () 185
rpc-server-use-all-protseqs ( ) 187
rpc-server-use-all-protseqs-if ( ) 189
rpc-server-use-protseq ( ) 191
rpc-server-use-protseq-ep ( ) 193
rpc-server-use-protseq-if ( ) 195
rpc-sm-allocate ( ) 197
rpc-sm-client-free ( ) 198
rpc-sm-destroy-client-context ( ) 199
rpc-sm-enable-allocate ( ) 200
rpc-sm-free ( ) 201
rpc-sm-getfhread-handle ( ) 202
rpc~sm~set~client~alloc~free() 203
rpc-sm-set-thread-handle ( ) 204
rpc~sm~swap~client~alloc~free() 205
rpc-string-binding-compose ( ) 206
rpc-string-binding-parse ( ) 207
rpc-stringfree() 209
uuid-compare() 211
uuid-create() 212
uuid-create-nil() 213
uuid-equal( )
uuidfrom-string ( ) 215
uuid-is-nil() 216
uuidfo-string ()
Interface Definition Language
Section 4 219
4.1 Notation
IDL Language Specification
4.2 220
IDL Lexemes
4.2.1 220
Keywords and Reserved Words
4.2.1.1 220
Identifiers 220
4.2.1.2
0 ISO/IEC
ISOAEC 11578:1996(E)
IDL Punctuation
4.2.1.3
Alternate Representation of Braces
4.2.1.4
4.2.1.5 White Spate
4.2.2 Comments
4.2.3 Interface Definition Structure
4.2.4 Interface Header
4.2.4.1 The uuid Attribute
4.2.4.2 The version Attribute
The endpoint Attribute
4.2.4.3
The local Attribute
4.2.4.4
The pointer default Attribute
4.2.4.5
Interface Body
4.2.5
Import Declaration
4.2.6
Constant Declaration
4.2.7
Syntax
4.2.7.1
Semantics and Restrittions
4.2.7.2
Type Declarations and Tagged Declarations
4.2.8
Base Types
4.2.9
Syntax
4.2.9.1
Integer Types
4.2.9.2
The char Types
4.2.9.3
The boolean Type
4.2.9.4
The byte Type
4.2.9.5
The void Type
4.2.9.6
4.2.9.7 The handle-t Type
4.2.10 Constructed Types
4.2.11 Structures
4.2.12 Unions
4.2.12.1 Syntax
4.2.12.2 Semantics and Restrittions
4.2.13 Enumerated Types
4.2.14 Pipes
4.2.14.1 Syntax
4.2.14.2 Semantics and Restrittions
4.2.15 Arrays
4.2.15.1 Syntax
4.2.15.2 Semantics and Restrittions
4.2.15.3 Arrays of Arrays
4.2.16 Type Attributes
4.2.16.1 Syntax
4.2.16.2 Semantics and Restrittions
4.2.16.3 The transmit as Attribute
4.2.16.4 The handle Attribute
4.2.16.5 The string Attribute
4.2.16.6 The context handle Attribute
4.2.17 Field Attributes
4.2.17.1 Syntax
4.2.17.2 Semantics and Restrittions
4.2.17.3 The ignore Attribute
4.2.18 Field Attributes in Array Declarations
4.2.18.1 Conformant Arrays
4.2.18.2 Varying and Conformant Varying Arrays
4.2.18.3 Relationships Between Attributes
4.2.18.4 Negative Size and Length Specifications 233
4.2.19 Field Attributes in String Declarations 233
4.2.19.1 The first is, last is and iength is Attributes
4.2.19.2 The max is Attribute -
4.2.19.3 The size -is Attribute
4.2.20 Pointers -
vi
0 ISO/IEC
4.2.20.1 Syntax 234
4.2.20.2 Semantics and Restrittions 234
4.2.20.3 Attributes Applicable to Pointers 235
4.2.20.4 Varying Arrays of Pointers 235
4.2.20.5 Restrittions on Pointers 236
Pointers as Arrays 237
4.2.21
Pointers with the string Attribute 237
4.2.21.1
Possible Ambiguity Resolved 237
4.2.21.2
4.2.22 Operations
The idempotent Attribute 238
4.2.22.1
4.2.22.2 The broadcast Attribute
4.2.22.3 The maybe Attribute
4.2.23 Parameter Declarations
4.2.23.1 Syntax
4.2.23.2 Semantics and Restrittions
4.2.23.3 Directional Attributes
4.2.23.4 Aliasing in Parameter Lists 239
4.2.24 Predefined Types 239
4.2.25 The error-Status-t Type 239
4.2.26 International Character Types 239
4.2.27 Anonymous Types 240
4.3 The Attribute Configuration Source 241
4.3.1 Comments 241
4.3.2 Identifiers 241
4.3.3 Syntax 241
4.3.4 Include Declaration 242
4.3.5 Specifying Binding Handles 243
4.3.5.1 The explicit handle Attribute 243
4.3.5.2 The implicit-handle Attribute 243
4.3.5.3 The auto handle Attribute 243
The represent as Attribute 244
4.3.6
4.3.7 The code andiocode Attributes 244
4.3.8 The in line and out of line Attributes 244
Returrktatuses - - 245
4.3.9
The comm Status Attribute 245
4.3.9.1
The fault Status Attribute 245
4.3.9.2
Interactioi of the comm Status and fault Status Attributes 246
4.3.9.3 -
4.3.10 The heap Attribute -
4.3.11 The enable allocate Attribute
4.4 IDL Grammakynopsis
4.4.1 Grammar Synopsis
4.4.2 Alphabetic Listing of Productions
4.5 IDL Constructed Identifiers 253
4.6 IDL and ACS Reserved Words
Section 5 Stubs 255
5.1 The Application/Stub Interface 255
5.1.1 Parameters 255
5.1.1.1 Parameter Memory Management 255
5.1.1.2 Client-side Allocation 256
5.1.1.3 Server-side Allocation 256
5.1.1.4 Aliasing 257
5.1.2 Default Manager EPVs 257
5.1.3 Interface Handle 257
5.1.4 Pipes 257
5.1.4.1 Processing of in Pipes 259
5.1.4.2 Processing of out Pipes 260
5.1.4.3 Processing of in,out Pipes 261
5.1.5 IDL and ACS Type Attributes 261
5.1.5.1 The IDL transmit as Attribute 261
-
vii
0 ISO/IEC
ISO/lEC 11578:1996(E)
The IDL handle Attribute
5.1.5.2
Interaction of IDL transmit as and IDL handle Attributes
5.1.5.3
The ACS represent as Attribute
5.1.5.4
Interaction of the ACS represent as Attribute and the
5.1.5.5 -
IDL handle Attribute
Interaction of the ACS represent as Attribute with the 264
5.1.5.6
-
IDL transmit as Attribute
5.1.6 Context Hand6 Rundown
5.2 Interoperability Requirements on Stubs
5.2.1 Operation Numbers
Error Handling During Floating-Point Unmarshalling 266
5.2.2
Section 6 Remote Procedure Call Model
6.1 CIientKerver Execution Model
6.1.1 RPC Interface and RPC Object
6.1.1.1 RPC Interfaces
6.1.1.2 RPC Objects
6.1.2 Interface Version Numbering
6.1.2.1 Rules for Changing Version Numbers
6.1.2.2 Definition of an Upwardly Compatible Change
6.1.2.3 Non-upwardly Compatible Changes
Remote Procedure Calls
6.1.3
6.1.4 Nested RPCs
6.1.5 Execution Semantics
Context Handles
6.1.6
6.1.7 Threads
Cancels
6.1.8
Binding, Addressing and Name Services
6:2.1 Binding
6.2.2 Endpoints and the Endpoint Mapper
6.2.2.1 Client Operation
6.2.2.2 Server Operation
NSI Interface
6.2.3
Common Declarations
6.2.3.1
Protocol Towers
6.2.3.2
The server name Object Attributes
6.2.3.3
The group Object Attributes
6.2.3.4
The Profile Object Attributes
6.2.3.5
Encoding
6.2.3.6
6.2.3.7 Name Service Class Values
Error Handling Model
Section 7 RPC Service Definition
7.1 Call Representation Data Structure
7.2 Service Primitives
Invoke 286
7.2.1
7.2.2 Result
7.2.3 Cancel
7.2.4 Error
7.2.5 Reject
Section 8 Statechart Specification Language Semantics
8.1 The Elements of Statecharts
82 . State Hierarchies
83 . Concurrency
84 Graphical Expressions
8'4 1 Default Entrances
81412 Conditional Connectors
8.4.3 Terminal Connectors
85 Semantics that Require Special Consideration
8:5.1 Implicit Exits and Entrances (Scope of Transitions)
8.5.2 Conflicting Transitions
0 lSO/IEC
8.5.3 Execution Steps and Time 295
Synchronisation and Rate Conditions 296
8.5.4
Summary of Language
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.