CONTENTS Title Page Copyright Page Preface 1 RTR Concepts 1.1 The Purpose of RTR 1.2 Requester and Server processes 1.3 The Three Layer Model 1.4 The Partitioned Data Model 1.5 Transaction Integrity 1.6 Broadcasts 1.7 Reliability features 1.7.1 Standby servers 1.7.2 Shadow servers 1.7.3 Router failover 1.7.4 Cooperative Transaction Recovery 1.7.5 Backend restart recovery 1.7.6 Transaction message replay 1.7.7 Link failure recovery 1.8 Concurrent Servers 1.9 Flexibility and Growth 1.10 Failure scenarios 1.10.1 Loss of a backend CPU 1.10.2 Loss of a router CPU 1.10.3 Loss of a communications link 1.10.4 Loss of a frontend CPU 1.11 RTR Facilities 1.12 Call-out servers 1.13 RTR Application Programming Interface 2 RTR Applications 2.1 Requester Processes 2.1.1 Structure of a simple requester 2.1.2 Receiving messages from the server 2.1.3 An example of a simple requester 2.2 Server processes 2.2.1 Structure of a simple server 2.2.2 Server design rules 2.2.3 An example of a simple server 3 The System Services Interface 3.1 Synchronization 3.2 Return status 3.3 Committing Transactions and Voting 3.4 Aborted transactions 3.5 Partitioned Data Model 3.6 RTR Facilities 3.7 Call formats $ABORT_TX $ABORT_TXW $COMMIT_TX $COMMIT_TXW $DCL_TX_PRC $DCL_TX_PRCW $DEQ_TX $DEQ_TXW $ENQ_TX $ENQ_TXW $START_TX $VOTE_TX $VOTE_TXW 3.8 System Service Return Codes 4 RTR Run-Time Library 4.1 Introduction 4.1.1 Requester Routines 4.1.2 Server Routines 4.1.3 Common Routines for Requesters and Servers 4.2 Restrictions 4.3 Examples 4.3.1 Requester Example 4.3.2 Server Example 4.3.3 Building the examples 4.4 Descriptions of the RTR-RTL Routines RTR$ABORT_TRANSACTION RTR$COMMIT_TRANSACTION RTR$DECLARE_REQUESTER RTR$DECLARE_SERVER RTR$RECEIVE RTR$REJECT RTR$REPLY RTR$SEND RTR$SPECIFY_LOWER_BOUND RTR$SPECIFY_STATUS_VARIABLE RTR$SPECIFY_UPPER_BOUND RTR$START_TRANSACTION EXAMPLES 2-1 Simple PASCAL requester 2-2 Simple PASCAL server 4-1 RTL requester 4-2 RTL server FIGURES 1-1 Requesters and servers 1-2 The three layer model 1-3 Partitioned data-model 1-4 Standby servers 1-5 Shadow servers TABLES 3-1 Abort codes returned in RTR$L_TXSB_RSNSTS 3-2 RTR$_DCL_FLAGS 3-3 RTR$_TXSB 3-4 RTR$_ACCESS 3-5 RTR$_DATPAR_ELEM 3-6 Routing Key Data-types 3-7 RTR$_EVT 3-8 RTR$_EVTMSK 3-9 Event Numbers 3-10 RTR$_ENQ_FLAGS 3-11 RTR$_VOTE_FLAGS