ctrrpcomp.tcl

来自「跑leach需要的」· TCL 代码 · 共 85 行

TCL
85
字号
## tcl/ctr-mcast/CtrRPComp.tcl## Copyright (C) 1997 by USC/ISI# All rights reserved.                                            #                                                                # Redistribution and use in source and binary forms are permitted# provided that the above copyright notice and this paragraph are# duplicated in all such forms and that any documentation, advertising# materials, and other materials related to such distribution and use# acknowledge that the software was developed by the University of# Southern California, Information Sciences Institute.  The name of the# University may not be used to endorse or promote products derived from# this software without specific prior written permission.# # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.# # Contributed by Polly Huang (USC/ISI), http://www-scf.usc.edu/~bhuang# Class CtrRPCompCtrRPComp instproc init sim {	$self set ns_ $sim	$self next}    CtrRPComp instproc compute-rpset {} {	$self instvar ns_	### initialization	foreach node [$ns_ all-nodes-list] {		set connected($node) 0	}	set urtl [$ns_ get-routelogic]		### connected region algorithm	foreach node [$ns_ all-nodes-list] {		foreach {vertix lvertix} [array get ldomain] {			if {[$urtl lookup [$node id] [$vertix id]] >= 0} {				lappend ldomain($vertix) $node				set connected($node) 1				break			}		}				if {!$connected($node)} {			set ldomain($node) $node			set connected($node) 1		}	}	### for each region, set rpset	foreach {vnode lvertix} [array get ldomain] {		set hasbsr 0		set rpset ""		### find rpset for the region		foreach vertix $lvertix {			set class_info [$vertix info class]			if {$class_info != "LanNode"} {				set ctrdm [[$vertix getArbiter] getType "CtrMcast"]				if [$ctrdm set c_bsr_] {set hasbsr 1}				if [$ctrdm set c_rp_] {					lappend rpset $vertix				}			}		}		foreach vertix $lvertix {			set class_info [$vertix info class]			if {$class_info != "LanNode"} {				set ctrdm [[$vertix getArbiter] getType "CtrMcast"]				if $hasbsr {					$ctrdm set-rpset $rpset				} else {					$ctrdm set-rpset ""					puts "no c_bsr"				}			}		}	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?