nsmcp::AccessAnalytics method accumulate (protected)
<instance of nsmcp::AccessAnalytics> 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
![[i]](/resources/acs-subsite/ZoomIn16.gif)