ad_run_scheduled_proc proc_infoWhat it does:
Runs a scheduled procedure and updates monitoring information in the shared variables.Defined in: /web/philip/packages/acs-core/utilities-procs.tcl
Source code:
# Grab information about the scheduled procedure.
set thread [lindex $proc_info 0]
set once [lindex $proc_info 1]
set interval [lindex $proc_info 2]
set proc [lindex $proc_info 3]
set args [lindex $proc_info 4]
set time [lindex $proc_info 5]
set count 0
set debug [lindex $proc_info 7]
ns_mutex lock [nsv_get ad_procs mutex]
set procs [nsv_get ad_procs .]
# Find the entry in the shared variable. Splice it out.
for { set i 0 } { $i < [llength $procs] } { incr i } {
set other_proc_info [lindex $procs $i]
for { set j 0 } { $j < 5 } { incr j } {
if { [lindex $proc_info $j] != [lindex $other_proc_info $j] } {
break
}
}
if { $j == 5 } {
set count [lindex $other_proc_info 6]
set procs [lreplace $procs $i $i]
break
}
}
if { $once == "f" } {
# The proc will run again - readd it to the shared variable (updating ns_time and
# incrementing the count).
lappend procs [list $thread $once $interval $proc $args [ns_time] [expr { $count + 1 }] $debug]
}
nsv_set ad_procs . $procs
ns_mutex unlock [nsv_get ad_procs mutex]
if { $debug == "t" } {
ns_log "Notice" "Running scheduled proc $proc..."
}
# Actually run the procedure.
eval [concat [list $proc] $args]
if { $debug == "t" } {
ns_log "Notice" "Done running scheduled proc $proc."
}