nsmcp::AccessCardinalityStore method add (public)

 <instance of nsmcp::AccessCardinalityStore[i]> add row redactor

Defined in /usr/local/ns/tcl/nsmcp/log-traffic-aggregate.tcl

Parameters:
row (required)
redactor (required)

Testcases:
No testcase defined.
Source code:
set peer [dict get $row peerAddress]
set knownPeer [expr {$peer ni {{} - {[REDACTED]}}}]
set knownAgent [expr {[dict exists $row userAgent] && [dict get $row userAgent] ni {{} -}}]
if {[dict get ${:data} status] ne "active"} {
    if {$knownPeer} {dict incr :data peerOmitted}
    if {$knownAgent} {dict incr :data agentOmitted}
    return
}
if {$knownPeer} {
    set key [ns_crypto::md string -digest sha256 -- $peer]
    :addKey 0 $key {} 0 0
    incr :peerPending
}
if {$knownAgent} {
    set agent [dict get $row userAgent]
    set key [ns_crypto::md string -digest sha256 -- $agent]
    set label [$redactor message $agent]
    set redacted [expr {$label ne $agent}]
    set bytes [encoding convertto utf-8 $label]
    set clipped [expr {[string length $bytes]>1024}]
    if {$clipped} {
        set label [encoding convertfrom utf-8 [string range $bytes 0 1023]]
        while {[string length [encoding convertto utf-8 $label]]>1024} {set label [string range $label 0 end-1]}
        dict incr :data labelTruncatedRecords
    }
    if {$redacted} {dict incr :data labelRedactedRecords}
    :addKey 1 $key $label $clipped $redacted
    incr :agentPending
}
incr :events
if {${:events}>=512} {:flush}
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: