Sha256: 2284bcaffb323c1abb700a3a6e211811eade3c665ecc3e6712a7aa549b6ca887
Contents?: true
Size: 1.9 KB
Versions: 1
Compression:
Stored size: 1.9 KB
Contents
$:.unshift 'lib' $:.unshift '../lib' require 'slave' class Incrementer attr :decrementer, true def increment n n + 1 end def decrement n @decrementer.decrement n end end class Decrementer attr :incrementer, true def increment n @incrementer.increment n end def decrement n n - 1 end end # # # here we set up a triangle of communicating processes # # incrementer------decrementer # \ / # \ / # \ / # \ / # \ / # parent # # incrementer_slave = Slave::new Incrementer::new incrementer = incrementer_slave.object puts '---' puts 'incrementer :' puts " sockect : #{ incrementer_slave.socket.inspect }" puts " uri : #{ incrementer_slave.uri.inspect }" puts " pid : #{ incrementer_slave.pid.inspect }" puts decrementer_slave = Slave::new Decrementer::new decrementer = decrementer_slave.object puts '---' puts 'decrementer :' puts " sockect : #{ decrementer_slave.socket.inspect }" puts " uri : #{ decrementer_slave.uri.inspect }" puts " pid : #{ decrementer_slave.pid.inspect }" puts # # connect incrementer and decrementer # incrementer.decrementer = decrementer decrementer.incrementer = incrementer # # now we can call methods on each drb object, and they can also call methods on # each other # n = 0 n = incrementer.increment n p n #=> 1 n = decrementer.decrement n p n #=> 0 n = decrementer.increment n p n #=> 1 n = incrementer.decrement n p n #=> 0 # # we can explicitly shutdown certain slaves # incrementer_slave.shutdown n = decrementer.decrement 43 p n #=> 42 # # Slaves cannot live beyond their parent so we simply exit and all living slaves # will eventually die. how long it takes to die is determined by the # pulse_rate - the next time the Heartbeat trys to ping the parent the Slave # will die. # exit
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
slave-0.0.0 | sample/a.rb |