Canceling asynchronous requests
- Last Updated: March 30, 2020
- 2 minute read
- OpenEdge
- Version 12.2
- Documentation
You can cancel all asynchronous requests that are executing or pending on behalf
of the client on a particular server by executing the CANCEL-REQUESTS( ) method on the server object handle. This method raises
the STOP condition in the context of the asynchronous
procedure currently executing and causes results to be returned for any pending
asynchronous requests, as described in the following paragraph.
The associated event procedures execute for all canceled requests the next time
the client blocks for I/O or executes the PROCESS
EVENTS statement. Each event procedure receives the
following results, depending on the final state of its corresponding asynchronous
request:
-
Any request that is completed at the time of cancellation
but whose event procedure has not yet run — The event procedure
receives all input parameters passed from the request, and the
COMPLETEattribute on the asynchronous request handle (SELF) is set toTRUE. This is the same result as a normal asynchronous request completion. -
Any request that is executing and that is stopped in response to
the
CANCEL-REQUESTS( )method — The event procedure input parameters are set to theUnknown value (?), and theCOMPLETEattribute on the asynchronous request handle (SELF) is set toTRUE. If the stopped request does not handle theSTOPcondition raised by theCANCEL-REQUESTS( )method, theSTOPattribute on the asynchronous request handle (SELF) is also set toTRUE. This is the same result as if theSTOPcondition were raised in the server session running the request. -
Any request that is removed from the send queue prior to its
execution — The event procedure input parameters are set to the
Unknown value (?)(or unchanged forTEMP-TABLEparameters), and theCANCELLEDattribute on the asynchronous request handle (SELF) is set toTRUE. This result can only occur for a request that is canceled while waiting for execution.
Note: If you disconnect a server using the
DISCONNECT( ) method, this also cancels all asynchronous requests still
running or pending on the server for this particular client. For more information, see
Disconnecting from a PAS for OpenEdge instance.