Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Redesign of the free_port system for nns_cluster. |
---|---|
Timelines: | family | ancestors | descendants | both | odie |
Files: | files | file ages | folders |
SHA1: |
b79e07e239dc02ed986caff8700ca724 |
User & Date: | hypnotoad 2015-09-21 17:17:31 |
Context
2015-09-24
| ||
00:34 | Added a new mechanism to designate certain parties in the cluster to act as repositories. When a DISCOVERY request goes out that parrot back everything they have seen, not just its own services check-in: 64d9695c87 user: hypnotoad tags: odie | |
2015-09-21
| ||
17:17 | Redesign of the free_port system for nns_cluster. check-in: b79e07e239 user: hypnotoad tags: odie | |
10:48 | Updated the TOOL description check-in: 06880d1d1f user: hypnotoad tags: odie | |
Changes
Changes to modules/nns/nns_cluster.tcl.
︙ | ︙ | |||
35 36 37 38 39 40 41 42 43 44 45 46 47 48 | flush $sock } error]} { set ::cluster::broadcast_sock {} if {$::cluster::config(debug)} { puts "Broadcast ERR: $error - Reopening Socket" ::cluster::sleep 2000 } else { ::cluster::sleep 250 } } } ### # topic: 963e24601d0dc61580c9727a74cdba67 | > | 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | flush $sock } error]} { set ::cluster::broadcast_sock {} if {$::cluster::config(debug)} { puts "Broadcast ERR: $error - Reopening Socket" ::cluster::sleep 2000 } else { # Double the delay ::cluster::sleep 250 } } } ### # topic: 963e24601d0dc61580c9727a74cdba67 |
︙ | ︙ | |||
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | set serviceurl [lindex $messageinfo 0] set serviceinfo [lindex $messageinfo 1] dict set serviceinfo ipaddr [lindex $peer 0] dict set serviceinfo closed 1 Service_Remove $serviceurl $serviceinfo } ~SERVICE { set serviceurl [lindex $messageinfo 0] set serviceinfo [lindex $messageinfo 1] dict set serviceinfo ipaddr [lindex $peer 0] Service_Modified $serviceurl $serviceinfo set ::cluster::ping_recv($serviceurl) [clock seconds] } +SERVICE { set serviceurl [lindex $messageinfo 0] set serviceinfo [lindex $messageinfo 1] dict set serviceinfo ipaddr [lindex $peer 0] Service_Add $serviceurl $serviceinfo set ::cluster::ping_recv($serviceurl) [clock seconds] } DISCOVERY { | > > | 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | set serviceurl [lindex $messageinfo 0] set serviceinfo [lindex $messageinfo 1] dict set serviceinfo ipaddr [lindex $peer 0] dict set serviceinfo closed 1 Service_Remove $serviceurl $serviceinfo } ~SERVICE { set ::cluster::recv_message 1 set serviceurl [lindex $messageinfo 0] set serviceinfo [lindex $messageinfo 1] dict set serviceinfo ipaddr [lindex $peer 0] Service_Modified $serviceurl $serviceinfo set ::cluster::ping_recv($serviceurl) [clock seconds] } +SERVICE { set ::cluster::recv_message 1 set serviceurl [lindex $messageinfo 0] set serviceinfo [lindex $messageinfo 1] dict set serviceinfo ipaddr [lindex $peer 0] Service_Add $serviceurl $serviceinfo set ::cluster::ping_recv($serviceurl) [clock seconds] } DISCOVERY { |
︙ | ︙ | |||
232 233 234 235 236 237 238 | proc ::cluster::unpublish {url infodict} { variable local_data foreach {field value} $infodict { dict set local_data($url) $field $value } set info [lindex [array get local_data $url] 1] broadcast -SERVICE $url $info | < > > > > > > > > > | 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 | proc ::cluster::unpublish {url infodict} { variable local_data foreach {field value} $infodict { dict set local_data($url) $field $value } set info [lindex [array get local_data $url] 1] broadcast -SERVICE $url $info unset -nocomplain local_data($url) } proc ::cluster::configure {url infodict {send 1}} { variable local_data if {![::info exists local_data($url)]} return foreach {field value} $infodict { dict set local_data($url) $field $value } if {$send} { broadcast ~SERVICE $url $local_data($url) update } } proc ::cluster::get_free_port {{startport 50000}} { ::cluster::listen ::cluster::broadcast DISCOVERY after 10000 {set ::cluster::recv_message 0} # Wait for a pingback or timeout vwait ::cluster::recv_message update set macid [::cluster::macid] set port $startport set conflict 1 while {$conflict} { set conflict 0 set port [::nettool::find_port $port] foreach {url info} [search *@[macid]] { if {[dict exists $info port] && [dict get $info port] eq $port} { incr port set conflict 1 break } } update } return $port } proc ::cluster::log args { broadcast LOG {*}$args } |
︙ | ︙ |