if {![info exists ::env(LIGOTOOLS)]} { return -code error "Can't find LIGOtools." } lappend ::auto_path $::env(LIGOTOOLS)/lib . package require LDASJob set ::email mlei@ligo.caltech.edu ;## Site set ::site dev #set ::site test #set ::site ldas-suntest5 #set ::site cit #set ::site lho #set ::site llo #set ::site mit ;## Host set ::host ldas-dev.ligo.caltech.edu #set ::host ldas-cit.ligo.caltech.edu #set ::host ldas-test.ligo.caltech.edu #set ::host ldas.ligo-la.caltech.edu #set ::host ldas.ligo-wa.caltech.edu #set ::host ldas.mit.edu #set ::host corona.ligo.caltech.edu ;## Port set ::port 10001 #set ::port 12001 set ::time 0 #set ::sleep 5 set ::sleep 2 proc mysleep {args} { while {([clock seconds] - $::time) <= $::sleep} { after 1000 } set ::time [clock seconds] return } proc sendCmd {cmd args} { ;## sleep between jobs mysleep #if {[catch {SendCmd $cmd} errmsg]} { # puts stderr "Error: sendCmd: $errmsg" #} set cmd [lindex $cmd 2] catch {LJrun job -email $::email -manager $::site $cmd} if {$LJerror} { if {[info exists ::job(error)]} { set errmsg "$::job(error)" } LJdelete job puts stderr "Error: sendCmd: $errmsg" return } puts stdout $::job(jobid); flush stdout LJdelete job return } proc SendCmd {cmd} { set sid [retry {socket $::host $::port} 2] regsub -all -- {#[^\n]*} $cmd {} cmd regsub -all -- {[\n\s\t]+} $cmd { } cmd retry {puts $sid $cmd} 2 catch {flush $sid} set msg [retry {read $sid} 2] puts stdout $msg; flush stdout catch {close $sid} return $msg } proc retry {cmd {maxtries 1}} { set try 1 while {$try <= $maxtries} { if {[catch {uplevel 1 $cmd} msg]} { puts stderr "[lindex $cmd 0]: try $try of $maxtries: $msg" if {$try == $maxtries} { return -code error "[lindex $cmd 0]: $msg" } incr try after 5000 continue } return $msg } return }