# MPE features # Note that if MPE is not enabled, the MPE Tcl extensions are noops package provide copy_mpe_definition 0.0.0 namespace eval copy_mpe_definition { # Set by mpe_setup variable mpe_ready # MPE event ID variable event variable event_start variable event_end proc mpe_setup { msg } { variable mpe_ready variable event variable event_start variable event_end if { ! [ info exists mpe_ready ] } { set event [ mpe::create_pair $msg ] set event_start [ lindex $event 0 ] set event_end [ lindex $event 1 ] set mpe_ready 1 } } proc customMPE { result input } { turbine::rule $input "turbine::customMPE_body $input" \ name "customMPE-$input" type $::turbine::WORK } proc customMPE_body { inputs } { set key [ lindex $inputs 0 ] set msg [ lindex $inputs 1 ] if { $key == "start" } { startmpe_impl [ turbine::retrieve_decr_string $msg ] } else { endmpe_impl [ turbine::retrieve_decr_string $msg ] } } proc startmpe_impl { msg } { variable event_start mpe_setup $msg mpe::log $event_start "start-$msg" } proc endmpe_impl { msg } { variable event_end mpe::log $event_end "end-$msg" } }