abstract class Ens.Helper.Service.SyncResponseHandler.HTTP
extends Ens.Helper.Service.SyncResponseHandler
parameter DEFGWTIMEOUT = 60;
Default Web Gateway timeout
parameter TIMEOUTADJUSTMENT = 9;
Adjustment to response timeout.
Set to 90% round down to avoid having same time as response timeout.
property GatewayTimeout
as %String [ InitialExpression = "IRIS" ];
Declares the expected timeout in seconds of the external TCP socket system.
For incoming requests that come through an IRIS web application the expression 'IRIS' will make this
service use the IRIS web gateway timeout value found in the request headers.
Otherwise the default value will be 60 seconds.
The minimum of the calculation of 90% of GatewayTimeout and
90% of the specified ClientResponseTimeout is used to determine how
long to wait for a delayed response process to complete to reduce the chance the
current client connection is no longer available should the response become available
and to also reduce the chance of the client disconnecting and retrying before
invocation queued requests have recorded delayed cross reference information.
method GatewayTimeout()
as %Integer
method OnHandleNoResponseYet()
as %Status
This is called when we believe the original request is
still being processed and we want to be able to handle
caller not handling empty response.
For HTTP we want to wait until this current client connection goes aways.
Re-enable async detect.
Close connection if believe going on too long.
method OnPopulateSendSyncHandling(pTargetDispatchName As %String, pRequest As %Library.Persistent, pSyncCallTimeout As %Numeric = -1, pDescription As %String = "", ByRef pSendSyncHandling As %String)
as %Status
This is the protocol specific mechanism to identify if
the client of the service has provided a unique key to
identify the request and if the request is retry.
A client response wait timeout may also be provided.
If ResponseWaitTimeoutToUse is calculated to be 0 then delayed
response with retry will not be supported.
method SetReturnStatusCode(pStatusGenericReason As %String, pStatusText As %String = "", ByRef pResponse)
as %Status
Set HTTP Status code.
Note the Client may not receive and this can be by design since
if the response is outstanding and still being processed we
want to avoid returning to the caller of SendRequestSync an error
as callers code flow cannot be known.