nsmcp::AccessAnalytics method accumulate (protected)

 <instance of nsmcp::AccessAnalytics[i]> accumulate entry offset \
    changedVar stateVar cutoff

Defined in /usr/local/ns/tcl/nsmcp/lib/access-analytics.tcl

Parameters:
entry (required)
offset (required)
changedVar (required)
stateVar (required)
cutoff (required)

Testcases:
No testcase defined.
Source code:
upvar 1 $stateVar state
set start [dict get $entry startTime]
if {$start < $cutoff*60 || $start > [clock seconds]+60} {return}
set db ${:db}; set generation [dict get $state generation]
set path [dict get $entry path]; set excluded [expr {[string length $path]>512}]
if {$excluded} {set path {}}
set peer [dict get $entry peerAddress]
if {[string length $peer]>128 || ![ns_ip valid $peer]} {set peer {}}
set completed [dict get $entry timestamp]
set request_id [string range [dict get $entry requestIdentifier] 0 511]
set pool [string range [dict get $entry pool] 0 127]
set method [string range [dict get $entry method] 0 127]
set status [dict get $entry status]; set bytes [dict get $entry responseBytes]
set fallback [expr {[dict get $entry timingSource] eq "completion"}]
unset -nocomplain accept queue filter run
if {!$fallback} {
    foreach {column field} {accept acceptTime queue queueTime filter filterTime run runTime} {set $column [dict get $entry $field]}
}
# Proactive eviction reuses pages before reaching SQLite's hard limit.
incr :batchRows
set batchLimit [expr {min(1000,max(1,int([${:database} cget -maxBytes]*0.045/2048)))}]
if {${:batchRows}%$batchLimit==0} {:maintain}
$db execute {INSERT OR IGNORE INTO nsmcp_access_requests (generation,offset,start,completed,request_id,path,pool,method,status,bytes,fallback,excluded,accept,queue,filter,run,peer) VALUES($generation,$offset,$start,$completed,$request_id,$path,$pool,$method,$status,$bytes,$fallback,$excluded,$accept,$queue,$filter,$run,$peer)}
incr :rowCount [$db changes]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: