OSI Application Developer's Toolkit OSAK Programming

*HyperReader

  CONTENTS

  Title Page

  Copyright Page

  Preface

  Part I

  1      Planning Your Application

  1.1     Decision Checklist

  1.2     Managing Memory
    1.2.1      Deciding How Much Memory to Allocate
      1.2.1.1      Deciding How Large to Make the Workspace
      1.2.1.2      Deciding on the Size and Number of User Buffers
    1.2.2      Deciding How to Reclaim Memory
    1.2.3      Keeping Track of Buffers Used for Outbound Calls
    1.2.4      Choosing Between Static and Dynamic Allocation of Memory

  1.3     Considering Your Application's Addressing Needs

  1.4     Choosing Between Single and Multiple Associations

  1.5     Choosing Between Active and Passive Associations (OpenVMS Systems Only)

  1.6     Making An Application Portable

  1.7     Waiting to Receive Data

  2      Using the API

  2.1     Writing an OSAK Application

  2.2     Using Parameter Blocks
    2.2.1      Preparing to Construct a Parameter Block
    2.2.2      Constructing a Parameter Block
    2.2.3      Presentation PCI and ACSE-PCI Syntaxes

  2.3     Building a User Buffer

  2.4     Setting Up an Association
    2.4.1      Getting an Identifier for the Association
    2.4.2      Passing Buffers to the OSAK Interface
    2.4.3      Preparing to Receive and Examining Inbound Events
      2.4.3.1      Polling and Blocking
      2.4.3.2      Asynchronous Event Notification
      2.4.3.3      Using the Request Mask in the osak_select Routine
      2.4.3.4      Examining Incoming Data Units
    2.4.4      Requesting an Association and Responding to a Request

  2.5     Sending Data

  2.6     Releasing an Association
    2.6.1      Issuing the Release Request
    2.6.2      Responding to a Release Request
    2.6.3      Closing the Port

  2.7     Reclaiming Memory

  2.8     Redirecting a Connection

  3      Using Abstract Syntax Notation

  3.1     Using an ASN.1 Compiler
    3.1.1      Notes on Using the OSS Compiler
    3.1.2      Notes on Using Another Method of Encoding

  3.2     Using ROSE
    3.2.1      Making the Definitions for a ROSE-Based Application
      3.2.1.1      Mandatory Definitions
      3.2.1.2      Optional Definitions
    3.2.2      Writing a ROSE-Based ASE
      3.2.2.1      The OSS Compiler and ROSE
      3.2.2.2      Considerations for Both the Client and the Server
      3.2.2.3      Implementing the Client
      3.2.2.4      Implementing a ROSE Server

  4      Linking Your Application

  4.1     Linking on DEC OSF/1 Systems

  4.2     Linking on ULTRIX Systems

  4.3     Linking on OpenVMS Systems

  Part II

  5      OSI Networking Concepts

  5.1     Connections and Associations
    5.1.1      Services
    5.1.2      Phases of an Association
      5.1.2.1      Setup and Negotiation
      5.1.2.2      Data Exchange
      5.1.2.3      Release or Abort

  5.2     Layers
    5.2.1      Application Layer
    5.2.2      Presentation Layer
      5.2.2.1      Syntax Conversion
      5.2.2.2      Presentation Context
      5.2.2.3      More About Transfer Syntax
      5.2.2.4      More About Abstract Syntax Notation
      5.2.2.5      What an ASN.1 Compiler Does
    5.2.3      Session Layer
      5.2.3.1      Session Layer Services

  5.3     Types of Data
    5.3.1      User Data
    5.3.2      Capability Data
    5.3.3      Expedited Data
    5.3.4      Typed Data

  5.4     Mechanisms for Controlling OSI Information Exchange
    5.4.1      Activities
      5.4.1.1      Phases of an Activity
      5.4.1.2      Relationship to Associations
    5.4.2      Functional Units
      5.4.2.1      Presentation Functional Units
      5.4.2.2      Session Functional Units
    5.4.3      Synchronization Points and Resynchronization
    5.4.4      Tokens

  5.5     Remote Operations Service Entity (ROSE)

  5.6     Exception Reports

  6      OSAK and OSI Networking

  6.1     OSAK Interface
    6.1.1      How the OSAK Interface Uses the Transport Layer

  6.2     The OSAK Software and the Upper Layers
    6.2.1      ACSE and Presentation Interface
    6.2.2      Presentation Layer
    6.2.3      Session Layer

  6.3     The OSAK Parameter Block
    6.3.1      Outbound Calls
    6.3.2      Inbound Events

  6.4     Data Segmentation
    6.4.1      Segmentation Across the OSAK Interface
    6.4.2      Segmentation at the Session Layer

  6.5     Management of User Buffers

  6.6     Returns
    6.6.1      The Status of a Call
    6.6.2      Order of Completion of Calls
    6.6.3      Advantages and Disadvantages of Asynchronous and Synchronous Notification

  6.7     Redirecting an Association

  6.8     Addressing
    6.8.1      Making a Connection to a Specified Application
    6.8.2      Specifying Transport Templates
    6.8.3      Specifying a Multi-Homed Address
      6.8.3.1      Inbound
      6.8.3.2      Outbound
      6.8.3.3      Example of Addressing

  6.9     ROSE and the OSAK Software
    6.9.1      Functions Provided by the ROSE Programming Interface
    6.9.2      The ROSE Parameter Block
      6.9.2.1      ROSE Parameter Block Before and After Decoding
      6.9.2.2      Structure of an APDU Containing ROSE Data

  Part III

  7      Introduction to OSAKtrace

  7.1     The Components of OSAKtrace

  7.2     What OSAKtrace Captures

  7.3     OSAKtrace Output
    7.3.1      Output from the Trace Emitter
    7.3.2      Output from the Trace Analyzer

  8      Using OSAKtrace

  8.1     Using the Trace Utility

  8.2     Enabling OSAKtrace
    8.2.1      Enabling Tracing by Defining a Logical Name or an Environment Variable
    8.2.2      Enabling Tracing Through the Programming Interface

  8.3     Running the OSAKtrace Analyzer
    8.3.1      Command Syntax
    8.3.2      Default Options
    8.3.3      Errors Option
    8.3.4      Examples
    8.3.5      Interpreting the OSAKtrace Analysis file

  9      Interpreting OSAKtrace Output

  9.1     Layout of a Trace Text File

  9.2     Rules for the Display of User Data

  9.3     Layout of Headers-Only Transport and Session Trace Data

  A   Standards Information

  A.1     Protocol Specifications (ISO Standards)

  A.2     Service Definitions (ISO Standards)

  A.3     Abstract Syntax Notation (ISO Standards)

  A.4     ROSE Documents (CCITT Recommendations)

  A.5     NIST Agreements

  A.6     Ordering Documents

  EXAMPLES

  2-1        Constructing a Parameter Block

  2-2        Code for Calling osak_give_buffers

  2-3        Code for Reusing Buffers

  2-4        Code for Calling osak_select

  2-5        Code for Calling osak_assoc_req

  2-6        Code for Calling osak_accept_rsp

  2-7        Code for Calling osak_release_req

  2-8        Code for Calling osak_release_rsp

  2-9        Code for Calling osak_get_event After Releasing an Association

  6-1        Structure of an APDU

  FIGURES

  2-1        User Buffers on an Outbound Call

  2-2        Setting up an Association

  2-3        Setting up an Association Using Asynchronous Event Notification

  2-4        User Buffers After the Arrival of an Event

  2-5        Releasing an Association

  2-6        Releasing an Association Using Asynchronous Event Notification

  2-7        Using the OSAK Redirection Service

  3-1        Choices and Processes Involved in ROSE Programming

  5-1        Confirmed Service

  5-2        Application Entities, Application Processes, and Computer Systems

  5-3        Relationship Between Data Type, Abstract Syntax, and Transfer Syntax

  6-1        OSAK Interface and the OSI Reference Model

  6-2        Structure of the Parameter Block

  6-3        ROSE Parameter Block

  6-4        ROSE Parameter Block Before an Encoding Routine

  6-5        ROSE Parameter Block After an Encoding Routine

  7-1        Components of OSAKtrace Utility

  7-2        The Contents of a TSDU

  9-1        Introductory Lines

  9-2        DCS Table

  9-3        Analysis of a TSDU

  9-4        Headers-Only Transport and Session Trace Data

  TABLES

  1-1        Comparison of Static and Dynamic Allocation of Memory

  1-2        Advantages and Disadvantages of Active and Passive Applications

  2-1        Classifications of Parameters

  2-2        Sequence of Routine Calls Used by Responder During Setup

  2-3        Sequence of Routine Calls Used by Initiator During Setup

  2-4        Sequence of Routine Calls Used in Releasing an Association

  2-5        Sequence of Routine Calls Used in Responding to a Request for Release

  5-1        Services Requiring Particular Tokens

  6-1        Specifying OSI Transport Templates

  6-2        ROSE Functions

  8-1        A Comparison of the Two Methods of Tracing

  8-2        Meanings of Configuration Options