1、BRITISH STANDARD BS ISO/IEC 11578:1996 Information technology OpenSystems Interconnection Remote Procedure Call (RPC) ICS 35.100.70BSISO/IEC11578:1996 This British Standard, having been prepared under the directionof the DISC board, waspublished under the authorityof the Standards Boardand comes int
2、o effect on 15June 1997 BSI 12-1999 ISBN 0 580 27583 3 National foreword This British Standard reproduces verbatim ISO/IEC 11578:1996 and implements it as the UK national standard. The UK participation in its preparation was entrusted to Technical Committee IST/21, Open Systems Interconnection, Data
3、 Management and Open Distributed Processing, which has the responsibility to: aid enquirers to understand the text; present to the responsible international/European committee any enquiries on the interpretation, or proposals for change, and keep the UK interests informed; monitor related internatio
4、nal and European developments and promulgate them in the UK. A list of organizations represented on this committee can be obtained on request to its secretary. Cross-references The British Standards which implement international or European publications referred to in this document may be found in t
5、he BSI Standards Catalogue under the section entitled “International Standards Correspondence Index”, or using the “Find” facility of the BSI Standards Electronic Catalogue. A British Standard does not purport to include all the necessary provisions of a contract. Users of British Standards are resp
6、onsible for their correct application. Compliance with a British Standard does not of itself confer immunity from legal obligations. Summary of pages This document comprises a front cover, an inside front cover, pages i and ii, the ISO/IECtitlepage, pages ii to xviii, pages 1 to 484 and a back cover
7、. This standard has been updated (see copyright date) and may have had amendments incorporated. This will be indicated in the amendment table on the inside front cover. Amendments issued since publication Amd. No. Date CommentsBSISO/IEC11578:1996 BSI 12-1999 i Contents Page National foreword Inside
8、front cover Foreword xvii Text of ISO/IEC 11578 1ii blankBSISO/IEC11578:1996 ii BSI 12-1999 Contents Page Foreword xvii Section 1. General 1.1 Scope 1 1.2 Normative references 2 1.3 Informative References 2 1.4 Definitions 2 1.4.1 Reference model definitions 2 1.4.2 Application Layer Structure defin
9、itions 2 1.4.3 Service conventions definitions 3 1.5 Abbreviations 3 1.6 Portability 5 1.7 Services and Protocols 5 1.8 Conformance Requirements 6 Section 2. Introduction to the RPC API 2.1 RPC Programming Model Overview 8 2.1.1 Client/Server Model 8 2.1.1.1 Interfaces 8 2.1.1.2 Remoteness 8 2.1.1.3
10、 Binding 9 2.1.1.4 Name Services 10 2.1.1.5 Resource Models 10 2.1.1.6 Security Services 10 2.1.1.7 Server Implementation 10 2.1.2 Application/Stub/Run-time System 10 2.1.2.1 RPC Run Time 11 2.1.2.2 Stubs 11 2.1.2.3 Application Code 11 2.2 API Operations 11 2.2.1 Binding-related Operations 12 2.2.2
11、Name Service Operations 12 2.2.3 Endpoint Operations 12 2.2.4 Security Operations 12 2.2.5 Stub Memory Management Operations 12 2.2.6 Management Operations 12 2.2.7 UUID Operations 12 2.3 Binding 12 2.3.1 Binding Handles 14 2.3.1.1 Client and Server Binding Handles 14 2.3.1.2 Obtaining Binding Handl
12、es 14 2.3.2 String Bindings 14 2.3.3 Binding Steps 14 2.3.3.1 Server Binding Steps 15 2.3.3.2 Client Binding Steps 18 2.3.3.3 Call Routing Algorithms 18 2.3.4 Binding Methods 21 2.4 Name Service Interface 21 2.4.1 Name Service Model 21 2.4.2 Name Syntax Tags 22 2.4.3 Name Service Attributes 22 2.4.3
13、.1 Server Entries 22BSISO/IEC11578:1996 BSI 12-1999 iii Page 2.4.3.2 Group Entries 22 2.4.3.3 Profiles 23 2.4.4 Binding Searches 23 2.4.5 Search Algorithm 24 2.4.6 Name Service Caching 25 2.5 Server Model 26 2.5.1 Server Concurrency and Request Buffering 26 2.5.2 Management Interface 26 2.6 Server R
14、esource Models 26 2.6.1 The Server-Oriented Model 26 2.6.2 The Service-Oriented Model 27 2.6.3 The Object-Oriented Model 27 2.7 Security 27 2.8 Error Handling 27 2.9 Cancel Notification 28 2.10 Stubs 28 2.10.1 IDL to Stub Data Type Mappings 28 2.10.2 Manager EPVs 28 2.10.3 Interface Handles 28 2.10.
15、4 Stub Memory Management 29 2.11 RPC API Routine Taxonomy 29 2.11.1 Binding Operations 29 2.11.2 Interface Operations 29 2.11.3 Protocol Sequence Operations 30 2.11.4 Local Endpoint Operations 30 2.11.5 Object Operations 30 2.11.6 Name Service Interface Operations 31 2.11.6.1 NSI Binding Operations
16、31 2.11.6.2 NSI Entry Operations 31 2.11.6.3 NSI Group Operations 31 2.11.6.4 NSI Profile Operations 31 2.11.7 Authentication Operations 32 2.11.8 The Server Listen Operation 32 2.11.9 The String Free Operation 32 2.11.10 UUID Operations 32 2.11.11 Stub Memory Management 32 2.11.12 Endpoint Manageme
17、nt Operations 33 2.11.13 Name Service Management Operations 33 2.11.14 Local Management Services 34 2.11.15 Local/Remote Management Services 34 2.11.16 Error Messages 34 Section 3. RPC API Manual Pages 3.1 RPC Data Types 35 3.1.1 Unsigned Integer Types 35 3.1.2 Signed Integer Type 35 3.1.3 Unsigned
18、Character String 35 3.1.4 Binding Handle 35 3.1.5 Binding Vector 36BSISO/IEC11578:1996 iv BSI 12-1999 Page 3.1.6 Boolean Type 37 3.1.7 Endpoint Map Inquiry Handle 37 3.1.8 Interface Handle 37 3.1.9 Interface Identifier 38 3.1.10 Interface Identifier Vector 38 3.1.11 Manager Entry Point Vector 38 3.1
19、.12 Name Service Handle 39 3.1.13 Protocol Sequence String 39 3.1.14 Protocol Sequence Vector 39 3.1.15 Statistics Vector 40 3.1.16 String Binding 40 3.1.17 String UUID 41 3.1.18 UUIDs 41 3.1.19 UUID Vector 41 Section 4. Interface Definition Language 4.1 Notation 192 4.2 IDL Language Specification 1
20、92 4.2.1 IDL Lexemes 192 4.2.1.1 Keywords and Reserved Words 192 4.2.1.2 Identifiers 192 4.2.1.3 IDL Punctuation 193 4.2.1.4 Alternate Representation of Braces 193 4.2.1.5 White Space 193 4.2.2 Comments 193 4.2.3 Interface Definition Structure 193 4.2.4 Interface Header 193 4.2.4.1 The uuid Attribut
21、e 194 4.2.4.2 The version Attribute 194 4.2.4.3 The endpoint Attribute 194 4.2.4.4 The local Attribute 194 4.2.4.5 The pointer_default Attribute 194 4.2.5 Interface Body 195 4.2.6 Import Declaration 195 4.2.7 Constant Declaration 195 4.2.7.1 Syntax 195 4.2.7.2 Semantics and Restrictions 196 4.2.8 Ty
22、pe Declarations and Tagged Declarations 197 4.2.9 Base Types 197 4.2.9.1 Syntax 197 4.2.9.2 Integer Types 198 4.2.9.3 The char Types 198 4.2.9.4 The boolean Type 198 4.2.9.5 The byte Type 198 4.2.9.6 The void Type 198 4.2.9.7 The handle_t Type 198 4.2.10 Constructed Types 199 4.2.11 Structures 199 4
23、.2.12 Unions 199BSISO/IEC11578:1996 BSI 12-1999 v Page 4.2.12.1 Syntax 199 4.2.12.2 Semantics and Restrictions 200 4.2.13 Enumerated Types 200 4.2.14 Pipes 200 4.2.14.1 Syntax 201 4.2.14.2 Semantics and Restrictions 201 4.2.15 Arrays 201 4.2.15.1 Syntax 201 4.2.15.2 Semantics and Restrictions 201 4.
24、2.15.3 Arrays of Arrays 201 4.2.16 Type Attributes 202 4.2.16.1 Syntax 202 4.2.16.2 Semantics and Restrictions 202 4.2.16.3 The transmit_as Attribute 202 4.2.16.4 The handle Attribute 202 4.2.16.5 The string Attribute 202 4.2.16.6 The context_handle Attribute 203 4.2.17 Field Attributes 203 4.2.17.1
25、 Syntax 203 4.2.17.2 Semantics and Restrictions 203 4.2.17.3 The ignore Attribute 203 4.2.18 Field Attributes in Array Declarations 204 4.2.18.1 Conformant Arrays 204 4.2.18.2 Varying and Conformant Varying Arrays 204 4.2.18.3 Relationships Between Attributes 205 4.2.18.4 Negative Size and Length Sp
26、ecifications 205 4.2.19 Field Attributes in String Declarations 205 4.2.19.1 The first_is, last_is and length_is Attributes 205 4.2.19.2 The max_is Attribute 206 4.2.19.3 The size_is Attribute 206 4.2.20 Pointers 206 4.2.20.1 Syntax 206 4.2.20.2 Semantics and Restrictions 206 4.2.20.3 Attributes App
27、licable to Pointers 207 4.2.20.4 Varying Arrays of Pointers 207 4.2.20.5 Restrictions on Pointers 208 4.2.21 Pointers as Arrays 208 4.2.21.1 Pointers with the string Attribute 209 4.2.21.2 Possible Ambiguity Resolved 209 4.2.22 Operations 209 4.2.22.1 The idempotent Attribute 209 4.2.22.2 The broadc
28、ast Attribute 209 4.2.22.3 The maybe Attribute 210 4.2.23 Parameter Declarations 210 4.2.23.1 Syntax 210 4.2.23.2 Semantics and Restrictions 210 4.2.23.3 Directional Attributes 210 4.2.23.4 Aliasing in Parameter Lists 210BSISO/IEC11578:1996 vi BSI 12-1999 Page 4.2.24 Predefined Types 211 4.2.25 The
29、error_status_t Type 211 4.2.26 International Character Types 211 4.2.27 Anonymous Types 211 4.3 The Attribute Configuration Source 211 4.3.1 Comments 211 4.3.2 Identifiers 211 4.3.3 Syntax 212 4.3.4 Include Declaration 213 4.3.5 Specifying Binding Handles 214 4.3.5.1 The explicit_handle Attribute 21
30、4 4.3.5.2 The implicit_handle Attribute 214 4.3.5.3 The auto_handle Attribute 214 4.3.6 The represent_as Attribute 214 4.3.7 The code and nocode Attributes 215 4.3.8 The in_line and out_of_line Attributes 215 4.3.9 Return Statuses 215 4.3.9.1 The comm_status Attribute 215 4.3.9.2 The fault_status At
31、tribute 216 4.3.9.3 Interaction of the comm_status and fault_status Attributes 216 4.3.10 The heap Attribute 216 4.3.11 The enable_allocate Attribute 216 4.4 IDL Grammar Synopsis 217 4.4.1 Grammar Synopsis 217 4.4.2 Alphabetic Listing of Productions 222 4.5 IDL Constructed Identifiers 225 4.6 IDL an
32、d ACS Reserved Words 226 Section 5. Stubs 5.1 The Application/Stub Interface 227 5.1.1 Parameters 227 5.1.1.1 Parameter Memory Management 227 5.1.1.2 Client-side Allocation 228 5.1.1.3 Server-side Allocation 228 5.1.1.4 Aliasing 228 5.1.2 Default Manager EPVs 228 5.1.3 Interface Handle 228 5.1.4 Pip
33、es 229 5.1.4.1 Processing of in Pipes 231 5.1.4.2 Processing of out Pipes 232 5.1.4.3 Processing of in,out Pipes 234 5.1.5 IDL and ACS Type Attributes 234 5.1.5.1 The IDL transmit_as Attribute 234 5.1.5.2 The IDL handle Attribute 235 5.1.5.3 Interaction of IDL transmit_as and IDL handle Attributes 2
34、35 5.1.5.4 The ACS represent_as Attribute 235 5.1.5.5 Interaction of the ACS represent_as Attribute and the IDL handle Attribute 236BSISO/IEC11578:1996 BSI 12-1999 vii Page 5.1.5.6 Interaction of the ACS represent_as Attribute with the IDL transmit_as Attribute 236 5.1.6 Context Handle Rundown 236 5
35、.2 Interoperability Requirements on Stubs 237 5.2.1 Operation Numbers 237 5.2.2 Error Handling During Floating-Point Unmarshalling 237 Section 6. Remote Procedure Call Model 6.1 Client/Server Execution Model 239 6.1.1 RPC Interface and RPC Object 239 6.1.1.1 RPC Interfaces 240 6.1.1.2 RPC Objects 24
36、0 6.1.2 Interface Version Numbering 240 6.1.2.1 Rules for Changing Version Numbers 240 6.1.2.2 Definition of an Upwardly Compatible Change 241 6.1.2.3 Non-upwardly Compatible Changes 241 6.1.3 Remote Procedure Calls 241 6.1.4 Nested RPCs 241 6.1.5 Execution Semantics 241 6.1.6 Context Handles 242 6.
37、1.7 Threads 242 6.1.8 Cancels 244 6.2 Binding, Addressing and Name Services 245 6.2.1 Binding 245 6.2.2 Endpoints and the Endpoint Mapper 246 6.2.2.1 Client Operation 247 6.2.2.2 Server Operation 247 6.2.3 NSI Interface 247 6.2.3.1 Common Declarations 248 6.2.3.2 Protocol Towers 249 6.2.3.3 The serv
38、er_name Object Attributes 249 6.2.3.4 The group Object Attributes 250 6.2.3.5 The profile Object Attributes 251 6.2.3.6 Encoding 251 6.2.3.7 Name Service Class Values 251 6.3 Error Handling Model 252 Section 7. RPC Service Definition 7.1 Call Representation Data Structure 253 7.2 Service Primitives
39、253 7.2.1 Invoke 253 7.2.2 Result 254 7.2.3 Cancel 254 7.2.4 Error 255 7.2.5 Reject 255 Section 8. Statechart Specification Language Semantics 8.1 The Elements of Statecharts 257 8.2 State Hierarchies 258 8.3 Concurrency 258 8.4 Graphical Expressions 258BSISO/IEC11578:1996 viii BSI 12-1999 Page 8.4.
40、1 Default Entrances 258 8.4.2 Conditional Connectors 259 8.4.3 Terminal Connectors 259 8.5 Semantics that Require Special Consideration 259 8.5.1 Implicit Exits and Entrances (Scope of Transitions) 259 8.5.2 Conflicting Transitions 259 8.5.3 Execution Steps and Time 259 8.5.4 Synchronisation and Rac
41、e Conditions 260 8.6 Summary of Language Elements 260 8.6.1 Event Expressions 260 8.6.2 Condition Expressions 261 8.6.3 Action Expressions 262 8.6.4 Data Item Expressions 262 8.6.4.1 Atomic Numeric Expressions 262 8.6.4.2 Compound Numeric Expressions 262 8.6.4.3 String Expressions 263 Section 9. RPC
42、 Protocol Definitions 9.1 Conformance 264 9.2 RPC Stub to Run-time Protocol Machine Interactions 264 9.2.1 Client Protocol Machines 264 9.2.2 Server Protocol Machines 265 9.3 Connection-oriented Protocol 266 9.3.1 Client/Server 266 9.3.2 Association Group 267 9.3.3 Association 267 9.3.3.1 Associatio
43、n Management Policy 267 9.3.3.2 Primary and Secondary Endpoint Addresses 267 9.3.4 Call 267 9.3.5 Transport Service Requirements 268 9.4 Connection-oriented Protocol Machines 268 9.4.1 CO_CLIENT_ALLOC 268 9.4.2 CO_CLIENT_GROUP 268 9.4.3 CO_CLIENT 269 9.4.3.1 ASSOCIATION 269 9.4.3.2 CONTROL 269 9.4.3
44、.3 CANCEL 269 9.4.3.4 CALL 269 9.4.4 CO_SERVER_GROUP 269 9.4.5 CO_SERVER 269 9.4.5.1 ASSOCIATION 270 9.4.5.2 CONTROL 270 9.4.5.3 CANCEL 270 9.4.5.4 WORKING 270 9.5 Connectionless Protocol 270 9.5.1 Client/Server 270 9.5.2 Activity 270 9.5.3 Call 270 9.5.4 Maintaining Execution Context and Monitoring
45、 Liveness 271BSISO/IEC11578:1996 BSI 12-1999 ix Page 9.5.5 Serial Numbers 271 9.5.6 Transport Service Requirements 271 9.6 Connectionless Protocol Machines 271 9.6.1 RPC Stub to Run Time Protocol Machine Interactions 272 9.6.2 CL_CLIENT 272 9.6.2.1 CONTROL 272 9.6.2.2 AUTHENTICATION 272 9.6.2.3 CALL
46、BACK 272 9.6.2.4 PING 272 9.6.2.5 CANCEL 272 9.6.2.6 DATA 272 9.6.3 CL_SERVER 272 9.6.3.1 CONTROL 272 9.6.3.2 AUTHENTICATION 273 9.6.3.3 CANCEL 273 9.6.3.4 WORKING 273 9.7 Naming Conventions 273 Section 10. Connectionless RPC Protocol Machines 10.1 CL_CLIENT Machine 274 10.1.1 CL_CLIENT Activities 2
47、74 10.1.2 CL_CLIENT States 276 10.1.3 CL_CLIENT Events 281 10.1.4 CL_CLIENT Conditions 283 10.1.5 CL_CLIENT Actions 287 10.1.6 CL_CLIENT Data-Items 290 10.2 CL_SERVER Machine 297 10.2.1 CL_SERVER Activities 298 10.2.2 CL_SERVER States 302 10.2.3 CL_SERVER Events 308 10.2.4 CL_SERVER Actions 311 10.2
48、.5 CL_SERVER Conditions 318 10.2.6 CL_SERVER Data-Items 322 Section 11. Connection-oriented RPC Protocol Machines 11.1 CO_CLIENT Machine 330 11.1.1 CO_CLIENT Activities 330 11.1.2 CO_CLIENT States 332 11.1.3 CO_CLIENT Events 339 11.1.4 CO_CLIENT Actions 343 11.1.5 CO_CLIENT Conditions 349 11.1.6 CO_
49、CLIENT Data-Items 352 11.2 CO_CLIENT_ALLOC Machine 359 11.2.1 CO_CLIENT_ALLOC Activities 359 11.2.2 CO_CLIENT_ALLOC States 359 11.2.3 CO_CLIENT_ALLOC Events 361 11.2.4 CO_CLIENT_ALLOC Actions 363 11.2.5 CO_CLIENT_ALLOC Conditions 363 11.2.6 CO_CLIENT_ALLOC Data-Items 364 11.3 CO_CLIENT_GROUP Machine 364BSISO/IEC11578:1996 x BSI 12-1999 Page 11.3.1 CO_CLIENT_GROUP States 365 11.3.2 CO_CLIENT_GROUP Events 365 11.3.3 CO_CLIENT_GROUP Data-Items 366 11.4 CO_SERVER Machine 367 11.4.1 CO_SERVER Activities 368 11.4.2 CO_SERVER States 369 11.4.3 CO_SERVER Events 374 11.4.