nsmcp::QuestionJobPoller object method wait (public)

 nsmcp::QuestionJobPoller[i] wait name json deadline emit poll [ check ]

Defined in /usr/local/ns/tcl/nsmcp/question-backend.tcl

Parameters:
name (required)
json (required)
deadline (required)
emit (required)
poll (required)
check (optional)

Testcases:
No testcase defined.
Source code:
set delay 0.1
while {1} {
    set value [ns_json parse $json]
    if {[dict exists $value isError] && [dict get $value isError]} {return $json}
    if {![dict exists $value structuredContent jobHandle]} {return $json}
    set job [dict get $value structuredContent]
    set handle [dict get $job jobHandle]
    if {![regexp {^[0-9a-f]{64}$} $handle] || ![dict exists $job status]} {return $json}
    set status [dict get $job status]
    set event [dict create type job name $name jobHandle $handle status $status]
    if {[dict exists $job progress]} {dict set event progress [dict get $job progress]}
    if {![uplevel #0 [list {*}$emit $event]]} {
        return -code error -errorcode {NSMCP QUESTION CANCELLED} "Question cancelled; background jobHandle: $handle"
    }
    if {$status ni {queued running}} {return $json}
    if {[clock milliseconds] >= $deadline} {
        error "Question timed out waiting for background jobHandle $handle; use log_results with this handle to continue"
    }
    if {$check ne ""} {uplevel #0 $check}
    ns_sleep [expr {min($delay,max(0.001,($deadline-[clock milliseconds])/1000.0))}]
    set json [uplevel #0 [list {*}$poll $handle]]
    set delay [expr {min(1.0,$delay*1.5)}]
}
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: