⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ns-rca-stats.tcl

📁 可以在ns-2中进行仿真的SPIN路由协议的源码
💻 TCL
📖 第 1 页 / 共 2 页
字号:
    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 + -