diff options
author | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-28 14:50:27 +0000 |
---|---|---|
committer | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-28 14:50:27 +0000 |
commit | ddeed4af3cb175cb138734df9547cae75d67b9a9 (patch) | |
tree | 38eedb7927d624cfea96aa3eda6ec848e888c690 /lib/drb/gw.rb | |
parent | e9f37390748df8a49bf8e9d1a860239fd9f58c3f (diff) |
move method DRbObject#reinit to DRbObject.new_with.
extract method DRbObject.prepare_backtrace. add DRb.regist_server,
remove_server, fetch_server. change server in thread variable if
in-proc sesrver. [druby-ja:113]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@8206 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/drb/gw.rb')
-rw-r--r-- | lib/drb/gw.rb | 74 |
1 files changed, 68 insertions, 6 deletions
diff --git a/lib/drb/gw.rb b/lib/drb/gw.rb index 012a2b0a11..b7a5f5383f 100644 --- a/lib/drb/gw.rb +++ b/lib/drb/gw.rb @@ -5,9 +5,7 @@ module DRb class GWIdConv < DRbIdConv def to_obj(ref) if Array === ref && ref[0] == :DRbObject - it = DRbObject.new(nil) - it.reinit(ref[1], ref[2]) - return it + return DRbObject.new_with(ref[1], ref[2]) end super(ref) end @@ -40,9 +38,7 @@ module DRb return ref ? DRb.to_obj(ref) : DRb.front end - it = self.new(nil) - it.reinit(DRb.uri, [:DRbObject, uri, ref]) - it + self.new_with(DRb.uri, [:DRbObject, uri, ref]) end def _dump(lv) @@ -58,3 +54,69 @@ module DRb end end end + +=begin +DRb.install_id_conv(DRb::GWIdConv.new) + +front = DRb::GW.new + +s1 = DRb::DRbServer.new('drbunix:/tmp/gw_b_a', front) +s2 = DRb::DRbServer.new('drbunix:/tmp/gw_b_c', front) + +s1.thread.join +s2.thread.join +=end + +=begin +# foo.rb + +require 'drb/drb' + +class Foo + include DRbUndumped + def initialize(name, peer=nil) + @name = name + @peer = peer + end + + def ping(obj) + puts "#{@name}: ping: #{obj.inspect}" + @peer.ping(self) if @peer + end +end +=end + +=begin +# gw_a.rb +require 'drb/unix' +require 'foo' + +obj = Foo.new('a') +DRb.start_service("drbunix:/tmp/gw_a", obj) + +robj = DRbObject.new_with_uri('drbunix:/tmp/gw_b_a') +robj[:a] = obj + +DRb.thread.join +=end + +=begin +# gw_c.rb +require 'drb/unix' +require 'foo' + +foo = Foo.new('c', nil) + +DRb.start_service("drbunix:/tmp/gw_c", nil) + +robj = DRbObject.new_with_uri("drbunix:/tmp/gw_b_c") + +puts "c->b" +a = robj[:a] +sleep 2 + +a.ping(foo) + +DRb.thread.join +=end + |