REBOL [ ] if "yes" = ask "Debug? " [debug?: yes] recursion-level-alert: 3 site: http://www.colellachiara.com/soft/Libs/ do site/utility.r do site/async-protocol.r do site/async-http.r do site/timers.r do site/messaging.r do site/relays.r do site/chord.r ;listen-messages/async tcp://:2222 my-name: ask "Please input your name: " chord-join my-name [ahttp://64.246.26.106:2222 ahttp://192.87.116.71:2222 ahttp://192.87.116.72:2222] func [result] [ if not result [print "Unable to join the ring!! :(" exit] print "Ring joined! :)" current: myself do-every 0:01:00 [ print "-----Ring status-----" print ["Myself:" myself/name] print ["My successor:" my-successor/name] print ["My predecessor:" if my-predecessor [my-predecessor/name]] print "---------------------" true ] do-after 3 code: [ ;print ["Current:" mold current] ;print ["Current + 1:" make-finger-key key-of current 0] find-successor make-finger-key current/key 0 func [successor] [ either object? successor [ current: successor print ["Walking the ring... just met:" current/name] ] [ print "Uhm, restarting from myself." current: myself ] do-after 3 code ] ] ] if-error [do-events] [print "There was an error!" error? the-error: :error halt]