ns-diffusion.tcl
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:2k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # All diffusion related procedures go here
  2. Simulator instproc attach-diffapp { node diffapp } {
  3.     $diffapp dr [$node get-dr]
  4. }
  5. Node instproc get-dr {} {
  6.     $self instvar diffAppAgent_
  7.     if [info exists diffAppAgent_] {
  8. return $diffAppAgent_
  9.     } else {
  10. puts "Error: No DiffusionApp agent created for this node!n" 
  11. exit 1
  12.     }
  13. }
  14. Node instproc create-diffusionApp-agent { diffFilters } {
  15.     $self instvar gradient_ diffAppAgent_
  16.     
  17.     # first we create diffusion agent
  18.     # if it doesnot exist already
  19.     # do we really need this check, I mean for a given node
  20.     # is create-diffusionApp-agent{} called more than once??
  21.     
  22.     if [info exists diffAppAgent_] {
  23. puts "diffAppAgent_ exists: $diffAppAgent_"
  24. return $diffAppAgent_
  25.     }
  26.     # create diffApp agent for this node
  27.     $self set diffAppAgent_ [new Agent/DiffusionApp]
  28.     set da $diffAppAgent_
  29.     set port [get-da-port $da $self]
  30.     $da agent-id $port
  31.     $da node $self
  32.     
  33.     # now setup filters for this node
  34.     if {$diffFilters == ""} {
  35. puts "Error: No filter defined for diffusion!n"
  36. exit 1
  37.     }
  38.     #XXXX FOR NOW
  39.     set n 0
  40.     foreach filtertype [split $diffFilters "/"] {
  41. if {$filtertype == "GeoRoutingFilter" } continue
  42. set filter($n) [new Application/DiffApp/$filtertype $da]
  43. #$self set filtertype_($n) $filter($n)
  44. $filter($n) start         ;# starts filter
  45. incr n
  46.     }
  47.     
  48.     #return $da
  49. }
  50. proc get-da-port {da node} {
  51.     # diffusion assumes diffusion-application agent
  52.     # to be attached to non-zero port numbers
  53.     # thus for assigning port 254 to diffAppAgent
  54.     set port [Node set DIFFUSION_APP_PORT]
  55.     $node attach $da $port
  56.     return $port
  57. }