summaryrefslogtreecommitdiff
path: root/trunk/sample/drb/name.rb
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 15:13:14 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-25 15:13:14 +0000
commitd0233291bc8a5068e52c69c210e5979e5324b5bc (patch)
tree7d9459449c33792c63eeb7baa071e76352e0baab /trunk/sample/drb/name.rb
parent0dc342de848a642ecce8db697b8fecd83a63e117 (diff)
parent72eaacaa15256ab95c3b52ea386f88586fb9da40 (diff)
re-adding tag v1_9_0_4 as an alias of trunk@18848v1_9_0_4
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'trunk/sample/drb/name.rb')
-rw-r--r--trunk/sample/drb/name.rb117
1 files changed, 0 insertions, 117 deletions
diff --git a/trunk/sample/drb/name.rb b/trunk/sample/drb/name.rb
deleted file mode 100644
index 86b478fbec..0000000000
--- a/trunk/sample/drb/name.rb
+++ /dev/null
@@ -1,117 +0,0 @@
-=begin
- distributed Ruby --- NamedObject Sample
- Copyright (c) 2000-2001 Masatoshi SEKI
-=end
-
-=begin
-How to play.
-
-* start server
- Terminal 1
- | % ruby name.rb druby://yourhost:7640
- | druby://yourhost:7640
- | [return] to exit
-
-* start client
- Terminal 2
- | % ruby namec.rb druby://yourhost:7640
- | #<DRb::DRbObject:0x40164174 @uri="druby://yourhost:7640", @ref="seq">
- | #<DRb::DRbObject:0x40163c9c @uri="druby://yourhost:7640", @ref="mutex">
- | 1
- | 2
- | [return] to continue
-
-* restart server
- Terminal 1
- type [return]
- | % ruby name.rb druby://yourhost:7640
- | druby://yourhost:7640
- | [return] to exit
-
-* continue client
- Terminal 2
- type [return]
- | 1
- | 2
-=end
-
-require 'thread.rb'
-require 'drb/drb'
-
-module DRbNamedObject
- DRbNAMEDICT = {}
- attr_reader(:drb_name)
-
- def drb_name=(name)
- @drb_name = name
- Thread.exclusive do
- raise(IndexError, name) if DRbNAMEDICT[name]
- DRbNAMEDICT[name] = self
- end
- end
-end
-
-class DRbNamedIdConv < DRb::DRbIdConv
- def initialize
- @dict = DRbNamedObject::DRbNAMEDICT
- end
-
- def to_obj(ref)
- @dict.fetch(ref) do super end
- end
-
- def to_id(obj)
- if obj.kind_of? DRbNamedObject
- return obj.drb_name
- else
- return super
- end
- end
-end
-
-class Seq
- include DRbUndumped
- include DRbNamedObject
-
- def initialize(v, name)
- @counter = v
- @mutex = Mutex.new
- self.drb_name = name
- end
-
- def next_value
- @mutex.synchronize do
- @counter += 1
- return @counter
- end
- end
-end
-
-class Front
- def initialize
- seq = Seq.new(0, 'seq')
- mutex = Mutex.new
- mutex.extend(DRbUndumped)
- mutex.extend(DRbNamedObject)
- mutex.drb_name = 'mutex'
- @name = {}
- @name['seq'] = seq
- @name['mutex'] = mutex
- end
-
- def [](k)
- @name[k]
- end
-end
-
-if __FILE__ == $0
- uri = ARGV.shift
-
- name_conv = DRbNamedIdConv.new
-
- DRb.install_id_conv(name_conv)
- DRb.start_service(uri, Front.new)
- puts DRb.uri
- DRb.thread.join
-end
-