SPI Programming Manual (G06.24+, H06.03+, J06.03+)

SPI Programming Examples
SPI Programming Manual427506-006
E-89
Example E-20: Routines for C Requesters and
Servers
do
{
file_num = -1; /* Don’t Cancel */
l_status = AWAITIOX (&file_num, /*buffer*/, &read_count, /*tag*/,
time_to_wait);
if (l_status == CCL)
{
FILEINFO (file_num, &file_error);
if (file_error == 40) /* TIMEOUT Error */
{
printf ("Waiting for the Server\n");
} else /* if (file_error == 40) else */
{
l_await_done = true;
server_up = false;
l_recoverable_err = false; /* Set default value */
if (file_error == 201) l_recoverable_err = true;
if (file_error == 211) l_recoverable_err = true;
if (file_error == 6) /* System message */
{
memcpy (&startup_msg, &req_buffer, read_count);
if (startup_msg.msg_code == -5) /* STOP message */
l_recoverable_err = true;
if (startup_msg.msg_code == -6) /* ABEND message */
l_recoverable_err = true;
} /* of if (file_error == 6) */
printf ("File system error (%d) on WRITEREAD to the SERVER\n",
file_error);
if (l_recoverable_err)
{
do
{
restart_server();
}
while (server_up == false);
CANCEL (srvr_file_num); /* Cancel the IO */
} else /* if (l_recoverable_err) else */
{
DEBUG();
} /* of if (l_recoverable_err) */
} /* of if (file_error == 40) */
} else /* if (l_status == CCL) else */
{
l_op_done = true;
l_await_done = true;
} /* of if (l_status == CCL) */
}
while (l_await_done == false);
}
while (l_op_done == false);
} /* of PROC write_read_server; */
Example E-20. C File: SECRUTLC Supporting Code (page 4 of 4)