GDSX Manual
Service Routines
Extended General Device Support (GDSX) Manual–134303
8-78
^SIGNALTIMEOUT
END
ELSE IF > THEN
BEGIN
! CODING BUG: TIMEOUT PARAMETER ILLEGAL
END;
! WAIT FOR A COMPLETION ON ANY FILE
F := -1;
CALL ^AWAITIO ( F, @WAIT^BUFFER, CNT );
IF <> THEN
CALL ^FILEINFO ( F, ERR )
ELSE
ERR := 0;
IF NOT F THEN
BEGIN
! handle pseudo-$RECEIVE message
IF WAIT^BUFFER[0] = -22 THEN
BEGIN ! HANDLE SIGNALTIMEOUT
! BUFFER ALLOCATED BY TSCODE NEED NOT BE RELEASED
CALL REPLYX( , , , , , IOCBADDR );
! DO OTHER PROCESSING AS DESIRED
END ! HANDLE SIGNALTIMEOUT
ELSE ! A DIFFERENT $RECEIVE MESSAGE?
.
END
ELSE
! handle I/O completion on other open file
.
2. This example uses WAIT^EVENT to handle a timeout:
CALL ^READUPDATE ( 0 );
IF <> THEN CALL DEBUG; ! DO ERROR HANDLING
CALL ^SIGNALTIMEOUT ( 100D, , , IOCBADDR);
IF < THEN
BEGIN
! NO IOCB AVAILABLE
END
ELSE IF > THEN
BEGIN
! CODING BUG: TIMEOUT PARAMETER ILLEGAL
END;
! WAIT FOR ALL EVENT TYPES FOR 500 TICKS
EVENT := WAIT^EVENT ( -1, 500D );
! ONLY LISTEN FOR $RECEIVE-TYPE REQUESTS
@LOCAL^IOCB := ^LISTEN ( 1, 0, 0 );
@WAIT^BUFFER := LOCAL^IOCB.BUFADDR;
IF EVENT = 0 AND WAIT^BUFFER[0] = -22 THEN
BEGIN ! HANDLE SIGNALTIMEOUT
! BUFFER ALLOCATED BY TSCODE NEED NOT BE RELEASED
CALL REPLYX( , , , , , IOCBADDR );
! DO OTHER PROCESSING AS DESIRED
END; ! HANDLE SIGNALTIMEOUT
! HANDLE OTHER EVENT TYPES