Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

IPC_$SAR                          Domain/OS                           IPC_$SAR


NAME
     ipc_$sar - send an IPC datagram and await a reply

SYNOPSIS (C)
     #include <apollo/base.h>
     #include <apollo/ipc.h>

     void ipc_$sar(
          unsigned short &wait_time,
          ipc_$socket_handle_t to_socket,
          void *send_header,
          unsigned short &send_header_size,
          void *send_data,
          unsigned short &send_data_size,
          unsigned short &receive_header_limit,
          unsigned short &receive_data_limit,
          void *receive_header,
          unsigned short *receive_header_size,
          void *receive_data,
          unsigned short *receive_data_size,
          status_$t *status)

SYNOPSIS (Pascal)
     %include '/sys/ins/base.ins.pas';
     %include '/sys/ins/ipc.ins.pas';

     procedure ipc_$sar(
          in wait_time: pinteger;
          in to_socket: ipc_$socket_handle_t;
          in send_header: univ ipc_$hdr_info_t;
          in send_header_size: pinteger;
          in send_data: univ ipc_$data_t;
          in send_data_size: pinteger;
          in receive_header_limit: pinteger;
          in receive_data_limit: pinteger;
          out receive_header: univ ipc_$hdr_info_t;
          out receive_header_size: pinteger;
          out receive_data: univ ipc_$data_t;
          out receive_data_size: pinteger;
          out status: status_$t);

SYNOPSIS (FORTRAN)
     %include '/sys/ins/base.ins.ftn'
     %include '/sys/ins/ipc.ins.ftn'

           integer*2 wait_time, send_header_size, send_data_size,
           integer*2 receive_header_limit, receive_data_limit
           integer*2 receive_header_size, receive_data_size
           integer*4 status
           character to_socket*20, send_header*128, send_data*1024
           character receive_header*128, receive_data*1024

           call ipc_$sar(wait_time, to_socket,
          &              send_header, send_header_size,
          &              send_data, send_data_size,
          &              receive_header_limit, receive_data_limit,
          &              receive_header, receive_header_size,
          &              receive_data, receive_data_size, status)

DESCRIPTION
     Ipc_$sar sends a datagram to the socket on to_socket, and waits up to
     wait_time quarter-seconds for a reply.

     wait_time
          The number of quarter-seconds to wait for a reply.  Ipc_$sar will
          return after the wait time unless it receives a reply earlier.

     to_socket
          The handle for the destination socket.  The destination socket is
          the socket ipc_$sar sends the datagram to.

     send_header
          The header for the datagram that ipc_$sar sends.  It can contain up
          to 128 bytes.

     send_header_size
          The number of bytes in send_header.

     send_data
          The data for the datagram that ipc_$sar sends.  It can contain up to
          1024 bytes.

     send_data_size
          The number of bytes in send_data.

     receive_header_limit
          The number of bytes available to receive the header of the reply
          datagram.  Ipc_$sar will not write more than receive_header_limit
          bytes from the reply datagram's header into the buffer at
          receive_header.  An IPC datagram header can contain up to 128 bytes.

     receive_data_limit
          The number of bytes available to receive the data from the reply
          datagram.  Ipc_$sar will not write more than receive_data_limit
          bytes of datagram data into the buffer at receive_data.  An IPC
          datagram can contain up to 1024 bytes of data.

     receive_header
          The header from the reply datagram.

     receive_header_size
          The number of bytes that ipc_$sar copied into receive_header.

     receive_data
          The data from the reply datagram.

     receive_data_size
          The number of bytes that ipc_$rcv copied into receive_data.

     status
          The completion status.  If the reply datagram does not arrive within
          the specified time, ipc_$sar returns the status code ipc_$timeout.

NOTES
     Ipc_$sar is essentially a convenient way to carry on limited communica-
     tion via IPC sockets.  A program using ipc_$sar does not have to create
     and open a socket for the reply datagram, and pass the proper handle in
     the datagram sent or verify that the received datagram is actually a
     reply to what was sent.  Ipc_$send, together with ipc_$wait and ipc_$rcv,
     provide a more general IPC mechanism, and allow a single process to carry
     on parallel communication with more than one socket.

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026