bulkmail_record_sent_message bulkmail_id user_id sent_dateWhat it does:
Record a sent message in the db_flush_queue and in the instance countsDefined in: /web/philip/tcl/bulkmail-utils.tcl
Source code:
ns_share bulkmail_db_flush_queue_mutex
ns_share bulkmail_db_flush_queue
ns_share bulkmail_db_flush_wait_event
ns_share bulkmail_instance_mutexes
ns_share bulkmail_instances_mutex
ns_share bulkmail_instances
ns_share bulkmail_finished_instances_mutex
ns_share bulkmail_finished_instances
ns_share bulkmail_instance_finished_event
ns_mutex lock $bulkmail_db_flush_queue_mutex
catch {
lappend bulkmail_db_flush_queue [list $bulkmail_id $user_id $sent_date]
}
ns_mutex unlock $bulkmail_db_flush_queue_mutex
# tell the waiting thread that it's time to do its thing
ns_event set $bulkmail_db_flush_wait_event
# Next, let's take care of registering this in our instance message count
set instance_mutex [ns_set get $bulkmail_instance_mutexes $bulkmail_id]
ns_mutex lock $instance_mutex
catch {
ns_mutex lock $bulkmail_instances_mutex
catch {
set instance_stats [ns_set get $bulkmail_instances $bulkmail_id]
}
ns_mutex unlock $bulkmail_instances_mutex
# instance_stats is a two-item list: queued sent
set queued_count [lindex $instance_stats 0]
set sent_count [lindex $instance_stats 1]
incr sent_count
ns_mutex lock $bulkmail_instances_mutex
catch {
ns_set delkey $bulkmail_instances $bulkmail_id
ns_set put $bulkmail_instances $bulkmail_id [list $queued_count $sent_count]
}
ns_mutex unlock $bulkmail_instances_mutex
}
ns_mutex unlock $instance_mutex
if { $queued_count == $sent_count } {
ns_mutex lock $bulkmail_finished_instances_mutex
catch {
ns_set put $bulkmail_finished_instances $bulkmail_id $sent_count
}
ns_mutex unlock $bulkmail_finished_instances_mutex
ns_event set $bulkmail_instance_finished_event
}