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.