
{
{  PURPOSE:
{     The purpose of the NAT$GT_SAP is to describe an open Service Access Point in a system.
{
{  DESIGN:
{     The structure resides in the network paged segment accessible to all tasks in a system.
{     Access to all open SAPs is controlled via a single signature lock (i.e., while one SAP
{     is being accessed no other SAP in the system can be accessed.
{

  TYPE
    nat$gt_sap = record
      sap_id: nat$gt_sap_identifier,
      next_sap: ^nat$gt_sap,
      first_connection: ^nat$gt_sap_connection,
      event_timer: nlt$timer,
      connect_request_receiver: nat$gt_connect_request_receiver,
      connect_request_queue: nat$gt_connect_request_queue,
      CASE opened_via_share: boolean OF
      = TRUE =
        shared_sap_count: integer,
        shared_sap_server_active: boolean,
      = FALSE =
      CASEND,
    recend,

    nat$gt_sap_connection = record
      connection_id: nat$gt_connection_id,
      next_connection: ^nat$gt_sap_connection,
      sap_id: nat$gt_sap_identifier,
    recend,

    nat$gt_connect_request_receiver = record
      active: boolean,
      task: ost$global_task_id,
      activity_status: ^ost$activity_status,
      application_event: ^nat$gt_connect_event,
      application_buffer: nat$gt_application_buffer,
    recend,

    nat$gt_connect_request_queue = record
      beginning: ^nat$gt_connect_request,
      ending: ^nat$gt_connect_request,
    recend,

    nat$gt_connect_request = record
      checksum: boolean,
      connection_id: nlt$cl_connection_id,
      data_length: integer,
      expedited_data: boolean,
      source: nat$gt_destination_address,
      data: nlt$bm_message_id,
      next_connect_request: ^nat$gt_connect_request,
    recend,

    nat$gt_sap_list = record
      lock: ost$signature_lock,
      first_sap: ^nat$gt_sap,
    recend;

?? PUSH (LISTEXT := ON) ??
*copyc nat$gt_application_buffer
*copyc nat$gt_destination_address
*copyc nat$gt_event
*copyc nat$gt_interface
*copyc nat$gt_sap_identifier
*copyc nlt$bm_message_id
*copyc nlt$cl_connection
*copyc nlt$timer
*copyc ost$activity_status
*copyc ost$global_task_id
*copyc ost$signature_lock
?? POP ??
