nsmcp::FileLogSource method consume (protected)

 <instance of nsmcp::FileLogSource[i]> consume state bytes

Defined in /usr/local/ns/tcl/nsmcp/lib/log-source.tcl

Read channels are binary, so offsets and cursor are byte offsets even with multibyte UTF-8. Unfinished physical lines survive between reads.

Parameters:
state (required)
bytes (required)

Testcases:
No testcase defined.
Source code:
set parts [split $bytes \n]
set last [expr {[llength $parts]-1}]
set position [dict get $state cursor]
set fragment [dict get $state fragment]
set start [dict get $state fragmentOffset]
set clipped [dict get $state fragmentTruncated]
for {set i 0} {$i <= $last} {incr i} {
    set part [lindex $parts $i]
    set room [expr {${:maxMessageBytes} - [string length $fragment]}]
    if {[string length $part] > $room} {set clipped true}
    append fragment [string range $part 0 [expr {$room-1}]]
    incr position [string length $part]
    if {$i < $last} {
        incr position
        set line [encoding convertfrom utf-8 [string trimright $fragment \r]]
        set state [:joinLine $state $line $start $position $clipped]
        set fragment {}; set clipped false; set start $position
    }
}
dict set state cursor $position
dict set state fragment $fragment
dict set state fragmentOffset $start
dict set state fragmentTruncated $clipped
return $state
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: