nsmcp::QuestionService method poll (public)
<instance of nsmcp::QuestionService> poll context handle
Defined in /usr/local/ns/tcl/nsmcp/question-service.tcl
- Parameters:
- context (required)
- handle (required)
- Testcases:
- No testcase defined.
Source code: ns_mutex lock ${:mutex} try {set record [:owned $context $handle]} finally {ns_mutex unlock ${:mutex}} set canContinue [expr {[llength [:continuationJobs $record]]>0 && [llength [dict get $record turns]]<${:maxTurns}}] set turns {}; set i 0 foreach entry [dict get $record turns] { set tools {}; set j 0 foreach call [dict get $entry tools] { lappend tools $j object [list name string [dict get $call name] status string [dict get $call status] arguments string [dict get $call arguments] result string [dict get $call result] truncated boolean [dict get $call truncated]] set timing [::nsmcp::questionToolTiming $call] set fields [lindex $tools end] foreach {key type} {durationMs number durationSource string} { if {[dict exists $timing $key]} {lappend fields $key $type [dict get $timing $key]} else {lappend fields $key null {}} } set tools [lreplace $tools end end $fields] if {[dict exists $call evidenceHandle]} { set fields [lindex $tools end] lappend fields evidenceHandle string [dict get $call evidenceHandle] set tools [lreplace $tools end end $fields] } incr j } set jobs {}; set k 0 if {[dict exists $entry jobs]} { dict for {jobHandle job} [dict get $entry jobs] { set fields [list jobHandle string $jobHandle name string [dict get $job name] status string [dict get $job status]] if {[dict exists $job progress]} { set progress {} foreach key {wallMs examinedBytes sourceBytes scanBudgetBytes updatedAt filesCompleted filesProcessed filesSelected filesDiscovered filesSkipped filesScanned filesPending timeIndexSkippedBytes timeIndexValidationBytes selectedFromOffset selectedToOffset selectionProbeBytes aggregationDiskBytes aggregationDiskBudgetBytes aggregationPoolWaitCount aggregationPoolWaitMilliseconds aggregationPoolWaitLimitMilliseconds currentFileIndex currentFileNumber currentFileSize currentFileOffset currentFileSnapshotBytes} { if {[dict exists $job progress $key]} { set value [dict get $job progress $key] lappend progress $key [expr {$value eq "" ? "null" : "number"}] $value } } foreach key {phase offsetBasis scanStatus completionSummary aggregationBackend aggregationStatus aggregationFailurePhase aggregationFailureClass aggregationDiagnosticId} { if {[dict exists $job progress $key]} {lappend progress $key string [dict get $job progress $key]} } if {[dict exists $job progress currentFileCompressed]} {lappend progress currentFileCompressed boolean [dict get $job progress currentFileCompressed]} if {[dict exists $job progress truncatedByLimits]} {lappend progress truncatedByLimits boolean [dict get $job progress truncatedByLimits]} lappend fields progress object $progress } lappend jobs $k object $fields incr k } } lassign [:questionPresentation $record $entry] displayed editable lappend turns $i object [list id string [dict get $entry id] question string $displayed editQuestion string $editable answer string [dict get $entry answer] status string [dict get $entry status] elapsedMs [expr {[dict exists $entry elapsedMs] ? "number" : "null"}] [expr {[dict exists $entry elapsedMs] ? [dict get $entry elapsedMs] : {}}] error string [dict get $entry error] tools array $tools jobs array $jobs canContinue boolean [expr {$canContinue && [dict get $entry id] eq [dict get $record current]}]] incr i } set backendName [:defaultBackend] if {[dict exists $record backend]} {set backendName [dict get $record backend]} return [list {} object [list conversation string $handle server string [dict get $record server] backend string $backendName status string [dict get $record status] expires number [dict get $record expires] turns array $turns]]XQL Not present: Generic, PostgreSQL, Oracle
![[i]](/resources/acs-subsite/ZoomIn16.gif)