diff options
author | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-28 15:06:10 +0000 |
---|---|---|
committer | seki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-28 15:06:10 +0000 |
commit | 42959f502945d18c8ce793b1840d4140b1eb7278 (patch) | |
tree | 5d8221b8fadf1f039be47663c461fa9775fa7897 /lib/drb/gw.rb | |
parent | 5c47cc1f0ab1617762a7f05167a84e0ef636f4bd (diff) | |
download | ruby-42959f502945d18c8ce793b1840d4140b1eb7278.tar.gz |
* lib/drb/drb.rb: 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]
* lib/drb/gw.rb: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8207 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 + |