nsmcp::ChatCompletionsBackend method streamData (public)

 <instance of nsmcp::ChatCompletionsBackend[i]> streamData key \
    fields

Defined in /usr/local/ns/tcl/nsmcp/question-chat-completions.tcl

Append bounded bytes from a streamed HTTP response. Serialize buffer and byte-counter updates and retain explicit overflow/error state.

Parameters:
key (required)
Retained stream or configuration key.
fields (required)
HTTP callback dictionary containing newly received data.
Returns:
The callback update result.

Testcases:
No testcase defined.
Source code:
ns_mutex lock ${:mutex}
try {
    if {[nsv_get ${:streamStore} $key record]} {
        set data [dict get $fields data]
        dict incr record total [string bytelength $data]
        if {[dict get $record total] > ${:maxResponseBytes}
            || [string bytelength [dict get $record data]] + [string bytelength $data] > 1048576} {
            dict set record error "API response exceeded its buffer or response size limit"
        } elseif {[dict get $record error] eq ""} {
            dict append record data $data
        }
        nsv_set ${:streamStore} $key $record
    }
} finally {
    ns_mutex unlock ${:mutex}
}
# The request discards its normal output. Returning TCL_OK also works
# with cores whose queued callback evaluator does not propagate BREAK.
return
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: