📄 ns-rca-stats.tcl
字号:
set total_useful_data_ 0 set samples_useful_data_ 0 set total_useful_msg_data_ 0 set samples_useful_msg_data_ 0 set total_useful_REQ_ 0 set samples_useful_REQ_ 0 set total_useless_adv_ 0 set samples_useless_adv_ 0 set total_useless_REQ_ 0 set samples_useless_REQ_ 0 set total_useless_data_ 0 set samples_useless_data_ 0 set total_useless_msg_data_ 0 set samples_useless_msg_data_ 0 set total_meta_sent_ 0 set samples_meta_sent_ 0 set total_meta_rcvd_ 0 set samples_meta_rcvd_ 0 set total_msg_data_sent_ 0 set samples_msg_data_sent_ 0 set total_msg_data_rcvd_ 0 set samples_msg_data_rcvd_ 0 set total_energy_ 0}RCStats instproc update_rcvs {sender msg_type metasize data_size} { global ADV REQ DATA $self instvar total_rcvd_adv_ $self instvar samples_rcvd_adv_ $self instvar total_rcvd_REQ_ $self instvar samples_rcvd_REQ_ $self instvar total_rcvd_data_ $self instvar samples_rcvd_data_ $self instvar total_meta_rcvd_ $self instvar samples_meta_rcvd_ $self instvar total_msg_data_rcvd_ $self instvar samples_msg_data_rcvd_ if {$msg_type == $ADV} { incr total_rcvd_adv_ $metasize incr samples_rcvd_adv_ } elseif {$msg_type == $REQ} { incr total_rcvd_REQ_ $metasize incr samples_rcvd_REQ_ } elseif {($msg_type == $DATA) && ($metasize != 0)} { incr total_rcvd_data_ $metasize incr samples_rcvd_data_ } if {$metasize != 0} { incr total_meta_rcvd_ $metasize incr samples_meta_rcvd_ incr samples_msg_data_rcvd_ } incr total_msg_data_rcvd_ $data_size}RCStats instproc update_sends { sender msg_type metasize data_size} { global ADV REQ DATA $self instvar total_sent_adv_ $self instvar samples_sent_adv_ $self instvar total_sent_REQ_ $self instvar samples_sent_REQ_ $self instvar total_sent_data_ $self instvar samples_sent_data_ $self instvar total_meta_sent_ $self instvar samples_meta_sent_ $self instvar total_msg_data_sent_ $self instvar samples_msg_data_sent_ if {$msg_type == $ADV} { incr total_sent_adv_ $metasize incr samples_sent_adv_ } elseif {$msg_type == $REQ} { incr total_sent_REQ_ $metasize incr samples_sent_REQ_ } elseif {$msg_type == $DATA} { incr total_sent_data_ $metasize incr samples_sent_data_ } incr total_meta_sent_ $metasize incr samples_meta_sent_ incr total_msg_data_sent_ $data_size incr samples_msg_data_sent_}RCStats instproc update_useful {sender msg_type metasize data_size} { global ADV REQ DATA $self instvar total_rcvd_adv_ $self instvar samples_rcvd_adv_ $self instvar total_rcvd_data_ $self instvar samples_rcvd_data_ $self instvar total_sent_REQ_ $self instvar samples_sent_REQ_ $self instvar total_useful_adv_ $self instvar samples_useful_adv_ $self instvar total_useful_data_ $self instvar samples_useful_data_ $self instvar total_useful_REQ_ $self instvar samples_useful_REQ_ $self instvar total_useful_msg_data_ $self instvar samples_useful_msg_data_ $self instvar total_useless_adv_ $self instvar samples_useless_adv_ $self instvar total_useless_data_ $self instvar samples_useless_data_ $self instvar total_useless_REQ_ $self instvar samples_useless_REQ_ $self instvar total_useless_msg_data_ $self instvar samples_useless_msg_data_ $self instvar total_msg_data_rcvd_ $self instvar samples_msg_data_rcvd_ if {$msg_type == $ADV} { incr total_useful_adv_ $metasize incr samples_useful_adv_ set total_useless_adv_ [expr $total_rcvd_adv_ - $total_useful_adv_] incr samples_useless_adv_ } elseif {$msg_type == $DATA} { if {$metasize > 0} { incr samples_useful_data_ incr total_useful_data_ $metasize } if {$data_size > 0} { incr samples_useful_msg_data_ incr total_useful_msg_data_ $data_size } set old_total_useless_msg $total_useless_msg_data_ set total_useless_msg_data_ [expr $total_msg_data_rcvd_ - $total_useful_msg_data_] if {$total_useless_msg_data_ > $old_total_useless_msg} { incr samples_useless_msg_data_ } set old_total_useless_data $total_useless_data_ set total_useless_data_ [expr $total_rcvd_data_ - $total_useful_data_] if {$total_useless_data_ > $old_total_useless_data} { incr samples_useless_data_ } } }RCStats instproc pp {} { $self instvar total_sent_adv_ $self instvar total_sent_REQ_ $self instvar total_sent_data_ $self instvar total_rcvd_adv_ $self instvar total_rcvd_REQ_ $self instvar total_rcvd_data_ $self instvar total_useful_adv_ $self instvar total_useful_data_ $self instvar total_useful_REQ_ $self instvar total_useful_msg_data_ $self instvar total_useless_adv_ $self instvar total_useless_data_ $self instvar total_useless_msg_data_ $self instvar total_useless_REQ_ $self instvar total_meta_sent_ $self instvar total_meta_rcvd_ $self instvar total_msg_data_sent_ $self instvar total_msg_data_rcvd_ $self instvar total_energy_ puts "\n Overall totals" puts "Type\tS/R\tTotal\tUseful\tUseless" puts "ADV \t S \t $total_sent_adv_" puts "ADV \t R \t $total_rcvd_adv_ \t $total_useful_adv_ \t $total_useless_adv_" puts "REQ \t S \t $total_sent_REQ_ \t $total_useful_REQ_ \t $total_useless_REQ_" puts "REQ \t R \t $total_rcvd_adv_" puts "DATA \t S \t $total_sent_data_" puts "DATA \t R \t $total_rcvd_data_ \t $total_useful_data_ \t $total_useless_data_" puts "MSG \t S \t $total_msg_data_sent_" puts "MSG \t R \t $total_msg_data_rcvd_ \t $total_useful_msg_data_ \t $total_useless_msg_data_" set thetotal $total_meta_sent_ puts "Total DATA meta-data sent is $thetotal" puts "\nTotal Energy used: $total_energy_ Joules"}## RCStats/Detailed class## The difference between this class and its superclass is that statistics# are stored on a sender basis (as well as by aggregate totals).#Class RCStats/Detailed -superclass RCStatsRCStats/Detailed instproc init {} { $self instvar senders_ set senders_ [new Set/KeySet] $self next}RCStats/Detailed instproc init_sender {sender} { global ADV REQ DATA $self instvar senders_ rcvd_ sent_ useful_ useless_ useful_msg_data_ $self instvar useless_msg_data_ $self instvar rcvd_this_sender_ $self instvar sent_this_sender_ $self instvar rcvd_data_this_sender_ $self instvar sent_data_this_sender_ if {![$senders_ member $sender]} { $senders_ add [list $sender] foreach type [list $ADV $REQ $DATA] { set rcvd_($sender,$type) 0 set sent_($sender,$type) 0 set useful_($sender,$type) 0 set useless_($sender,$type) 0 set useful_msg_data_($sender) 0 set useless_msg_data_($sender) 0 set rcvd_this_sender_($sender) 0 set sent_this_sender_($sender) 0 set rcvd_data_this_sender_($sender) 0 set sent_data_this_sender_($sender) 0 } }} RCStats/Detailed instproc update_rcvs {sender msg_type metasize data_size} { global ADV REQ DATA $self instvar rcvd_ $self instvar rcvd_this_sender_ $self instvar rcvd_data_this_sender_ $self init_sender $sender set thercvs $rcvd_($sender,$msg_type) set rcvd_($sender,$msg_type) [expr $thercvs + $metasize] incr rcvd_this_sender_($sender) $metasize incr rcvd_data_this_sender_($sender) $data_size $self next $sender $msg_type $metasize $data_size}RCStats/Detailed instproc update_sends { sender msg_type metasize data_size} { global ADV REQ DATA $self instvar senders_ sent_ $self instvar sent_this_sender_ $self instvar sent_data_this_sender_ $self init_sender $sender set thesends $sent_($sender,$msg_type) set sent_($sender,$msg_type) [expr $thesends + $metasize] incr sent_this_sender_($sender) $metasize incr sent_data_this_sender_($sender) $data_size $self next $sender $msg_type $metasize $data_size}RCStats/Detailed instproc update_useful {sender msg_type metasize data_size} { global ADV REQ DATA $self instvar rcvd_ rcvd_data_this_sender_ $self instvar useful_ useful_msg_data_ $self instvar useless_ useless_msg_data_ $self init_sender $sender # compute useful set theuseful $useful_($sender,$msg_type) set useful_($sender,$msg_type) [expr $theuseful + $metasize] # compute useless set theuseful $useful_($sender,$msg_type) set thercvs $rcvd_($sender,$msg_type) set useless_($sender,$msg_type) [expr $thercvs - $theuseful] if {$msg_type == $DATA} { set theuseful_data $useful_msg_data_($sender) set useful_msg_data_($sender) [expr $theuseful_data + $data_size] set theuseful_data $useful_msg_data_($sender) set thercv_data $rcvd_data_this_sender_($sender) set useless_msg_data_($sender) [expr $thercv_data - $theuseful_data] } $self next $sender $msg_type $metasize $data_size}RCStats/Detailed instproc pp {} { global ADV REQ DATA $self instvar senders_ rcvd_ sent_ useful_ sent_data_ useless_ $self instvar sent_this_sender_ $self instvar rcvd_this_sender_ foreach sender [$senders_ uniquekeys] { puts "\n Statistics for neighbor $sender" set thetotal $sent_($sender,$ADV) puts "Total ADV meta-data sent is $thetotal" set thetotal $sent_($sender,$REQ) puts "Total REQ meta-data sent is $thetotal" set thetotal $sent_($sender,$DATA) puts "Total DATA meta-data sent is $thetotal" set thetotal $sent_this_sender_($sender) puts "Total meta-data sent is $thetotal" set thetotal $rcvd_($sender,$ADV) puts "Total ADV meta-data rcvd is $thetotal" set thetotal $rcvd_($sender,$REQ) puts "Total REQ meta-data rcvd is $thetotal" set thetotal $rcvd_($sender,$DATA) puts "Total DATA meta-data rcvd is $thetotal" set thetotal $rcvd_this_sender_($sender) puts "Total meta-data sent is $thetotal" set thetotal $useful_($sender,$ADV) puts "Total useful ADV meta-data rcvd is $thetotal" set thetotal $useful_($sender,$DATA) puts "Total useful DATA meta-data rcvd is $thetotal" set thetotal $useless_($sender,$ADV) puts "Total useless ADV meta-data rcvd is $thetotal" set thetotal $useless_($sender,$DATA) puts "Total useless DATA meta-data rcvd is $thetotal" set thetotal $useful_($sender,$RCS) puts "Total useful REQ meta-data sent is $thetotal" set thetotal $useless_($sender,$REQ) puts "Total useless REQ meta-data sent is $thetotal" } $self next}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -