nsmcp::QuestionService method cancel (public)

 <instance of nsmcp::QuestionService[i]> cancel context handle

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

Cancel the active turn of an owned conversation. Update queued or running state under the mutex so subsequent callbacks observe cancellation.

Parameters:
context (required)
Authenticated request context carrying the principal, grants and selected server.
handle (required)
Retained job or conversation handle; ownership and expiry checks still apply.
Returns:
The cancellation/conversation result.

Testcases:
No testcase defined.
Source code:
ns_mutex lock ${:mutex}
try {
    set record [:owned $context $handle]
    if {[dict get $record status] eq "queued"} {
        dict set record status cancelled
        set last [lindex [dict get $record turns] end]
        dict set last status cancelled
        dict set record turns [lreplace [dict get $record turns] end end $last]
        nsv_set ${:store} $handle $record
    } elseif {[dict get $record status] eq "running"} {
        dict set record status cancelling
        nsv_set ${:store} $handle $record
    }
} finally {
    ns_mutex unlock ${:mutex}
}
return [:poll $context $handle]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: