summaryrefslogtreecommitdiff
path: root/lib/drb/gw.rb
diff options
context:
space:
mode:
authorseki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-03-28 14:50:27 +0000
committerseki <seki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-03-28 14:50:27 +0000
commitddeed4af3cb175cb138734df9547cae75d67b9a9 (patch)
tree38eedb7927d624cfea96aa3eda6ec848e888c690 /lib/drb/gw.rb
parente9f37390748df8a49bf8e9d1a860239fd9f58c3f (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.rb74
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
+