Each receiver in a group requires a delay module that reflects its delay with respect to the particular source. When the receiver joins a group, []join-group identifies all session helpers in session_. If the destination index matches the group address the receiver are joining, then the following actions are performed.
SessionSim instproc join-group { agent group } { $self instvar session_ foreach index [array names session_] { set pair [split $index :] if {[lindex $pair 1] == $group} { # Note: must insert the chain of loss, delay, # and destination agent in this order: $session_($index) insert $agent # insert destination agent into session replicator; set src [lindex $pair 0] # find accum. b/w and delay; set dst [[$agent set node_] id] set accu_bw [$self get-bw $dst $src] set delay [$self get-delay $dst $src] set random_variable [new RandomVariable/Constant] # set delay variable ; $random_variable set avg_ $delay set delay_module [new DelayModel] # configure the delay module; $delay_module bandwidth $accu_bw $delay_module ranvar $random_variable $session_($index) insert-module $delay_module $agent # insert the delay module; } } }
Tom Henderson 2011-11-05