[macruby-changes] [4363] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Thu Jul 15 14:23:04 PDT 2010


Revision: 4363
          http://trac.macosforge.org/projects/ruby/changeset/4363
Author:   ernest.prabhakar at gmail.com
Date:     2010-07-15 14:23:03 -0700 (Thu, 15 Jul 2010)
Log Message:
-----------
timeouts for dispatch_methods

Modified Paths:
--------------
    MacRuby/trunk/lib/dispatch/README.rdoc
    MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb

Modified: MacRuby/trunk/lib/dispatch/README.rdoc
===================================================================
--- MacRuby/trunk/lib/dispatch/README.rdoc	2010-07-15 17:14:05 UTC (rev 4362)
+++ MacRuby/trunk/lib/dispatch/README.rdoc	2010-07-15 21:23:03 UTC (rev 4363)
@@ -592,12 +592,11 @@
 	file.print @msg
 	file.flush
 	file.close
-	q.join
-	#semaphore.wait
+	semaphore.wait(0.1)
 	print "fevent: #{(@fevent & fmask).to_s(2)} =>"
 	puts " #{Dispatch::Source::VNODE_WRITE.to_s(2)} (Dispatch::Source::VNODE_WRITE)"
 	File.delete(filename)
-	#semaphore.wait
+	semaphore.wait(0.1)
 	print "fevent: #{@fevent.to_s(2)} => #{fmask.to_s(2)}"
 	puts " (Dispatch::Source::VNODE_DELETE | Dispatch::Source::VNODE_WRITE)"
 	file_src.cancel!
@@ -615,7 +614,7 @@
 	end
 	file.print @msg
 	file.flush
-	semaphore2.wait
+	semaphore2.wait(0.1)
 	puts "fevent2: #{@fevent2} => [:write]"
 	file_src2.cancel!
 	

Modified: MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb
===================================================================
--- MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb	2010-07-15 17:14:05 UTC (rev 4362)
+++ MacRuby/trunk/sample-macruby/Scripts/gcd/dispatch_methods.rb	2010-07-15 21:23:03 UTC (rev 4363)
@@ -96,16 +96,16 @@
 puts "#{(0..4).find { |i| i.odd? }} => 1"
 puts "#{(0..4).p_find { |i| i.odd? }} => 1?"
 puts "#{(0..4).p_find(3) { |i| i.odd? }} => 3?"
-puts q = Dispatch::Queue.for("my_object")
 puts
-q.sync {"done sync"}
+puts q = Dispatch::Queue.new("org.macruby.queue.example")
+q.sync { puts "queue sync" }
 
-q.async {"done async"}
+q.async { puts "queue async" }
 	
-puts "joining async"
+puts "queue join"
 q.join
-puts sema = Dispatch::Semaphore.new(0)
 puts
+puts semaphore = Dispatch::Semaphore.new(0)
 q.async {
 	puts "semaphore signal"
 	semaphore.signal
@@ -115,6 +115,7 @@
 semaphore.wait
 
 
+puts
 timer = Dispatch::Source.periodic(0.4) do |src|
  	puts "Dispatch::Source.periodic: #{src.data}"
 end
@@ -128,6 +129,7 @@
 sleep 1 # => 1 2 1 ...
 timer.cancel!
 puts "cancel!"
+puts
 @sum = 0
 adder = Dispatch::Source.add do |s|
  	puts "Dispatch::Source.add: #{s.data} (#{@sum += s.data})"
@@ -145,7 +147,7 @@
 puts "sum: #{@sum} => 9"
 adder.cancel!
 @mask = 0
-masker = Dispatch::Source.or(q) do |s|
+masker = Dispatch::Source.or do |s|
 	@mask |= s.data
 	puts "Dispatch::Source.or: #{s.data.to_s(2)} (#{@mask.to_s(2)})"
 	semaphore.signal
@@ -161,21 +163,24 @@
 semaphore.wait
 puts "mask: #{@mask.to_s(2)} => 1011"
 masker.cancel!
+puts
+
 @event = 0
 mask = Dispatch::Source::PROC_EXIT | Dispatch::Source::PROC_SIGNAL
-proc_src = Dispatch::Source.process($$, mask, q) do |s|
-	puts "Dispatch::Source.process: #{s.data} (#{@event |= s.data})"
+proc_src = Dispatch::Source.process($$, mask) do |s|
+	@event |= s.data
+	puts "Dispatch::Source.process: #{s.data.to_s(2)} (#{@event.to_s(2)})"
 	semaphore.signal
 end
 
 
-sema2 = Dispatch::Semaphore.new(0)
+semaphore2 = Dispatch::Semaphore.new(0)
 @events = []
 mask2 = [:exit, :fork, :exec, :signal]
-proc_src2 = Dispatch::Source.process($$, mask2, q) do |s|
-	this_events = Dispatch::Source.data2events(s.data)
-	@events += this_events
-	puts "Dispatch::Source.process: #{this_events} (#{@events})"
+proc_src2 = Dispatch::Source.process($$, mask2) do |s|
+	these = Dispatch::Source.data2events(s.data)
+	@events += these
+	puts "Dispatch::Source.process: #{these} (#{@events})"
 	semaphore2.signal
 end
 sig_usr1 = Signal.list["USR1"]
@@ -185,16 +190,16 @@
 semaphore.wait
 result = @event & mask
 print "@event: #{result.to_s(2)} =>"
-puts  " #{Dispatch::Source::PROC_SIGNAL} (Dispatch::Source::PROC_SIGNAL)"
+puts  " #{Dispatch::Source::PROC_SIGNAL.to_s(2)} (Dispatch::Source::PROC_SIGNAL)"
 proc_src.cancel!
 semaphore2.wait
 puts "@events: #{(result2 = @events & mask2)} => [:signal]"
 proc_src2.cancel!
-puts "event2num: #{Dispatch::Source.event2num(result2[0])} => #{result}"
+puts "event2num: #{Dispatch::Source.event2num(result2[0]).to_s(2)} => #{result.to_s(2)}"
 puts "data2events: #{Dispatch::Source.data2events(result)} => #{result2}"
 @signals = 0
 sig_usr2 = Signal.list["USR2"]
-signal = Dispatch::Source.signal(sig_usr2, q) do |s|
+signal = Dispatch::Source.signal(sig_usr2) do |s|
 	puts "Dispatch::Source.signal: #{s.data} (#{@signals += s.data})"
 	semaphore.signal
 end
@@ -207,6 +212,7 @@
 semaphore.wait
 puts "signals: #{@signals} => 3"
 signal.cancel!
+puts
 @fevent = 0
 @msg = "#{$$}-#{Time.now.to_s.gsub(' ','_')}"
 puts "msg: #{@msg}"
@@ -215,38 +221,40 @@
 file = File.open(filename, "w")
 fmask = Dispatch::Source::VNODE_DELETE | Dispatch::Source::VNODE_WRITE
 file_src = Dispatch::Source.file(file.fileno, fmask, q) do |s|
-	puts "Dispatch::Source.file: #{s.data.to_s(2)} (#{(@fevent |= s.data).to_s(2)})"
+	@fevent |= s.data
+	puts "Dispatch::Source.file: #{s.data.to_s(2)} (#{@fevent.to_s(2)})"
 	semaphore.signal
 end
 file.print @msg
 file.flush
 file.close
-semaphore.wait
-print "fevent: #{@fevent & fmask} =>"
-puts " #{Dispatch::Source::VNODE_WRITE} (Dispatch::Source::VNODE_WRITE)"
+semaphore.wait(0.1)
+print "fevent: #{(@fevent & fmask).to_s(2)} =>"
+puts " #{Dispatch::Source::VNODE_WRITE.to_s(2)} (Dispatch::Source::VNODE_WRITE)"
 File.delete(filename)
-semaphore.wait
-print "fevent: #{@fevent} => #{fmask}" 
+semaphore.wait(0.1)
+print "fevent: #{@fevent.to_s(2)} => #{fmask.to_s(2)}"
 puts " (Dispatch::Source::VNODE_DELETE | Dispatch::Source::VNODE_WRITE)"
 file_src.cancel!
+q.join
 
 @fevent2 = []
 file = File.open(filename, "w")
 fmask2 = %w(delete write)
-file_src2 = Dispatch::Source.file(file, fmask2, q) do |s|
+file_src2 = Dispatch::Source.file(file, fmask2) do |s|
 	@fevent2 += Dispatch::Source.data2events(s.data)
 	puts "Dispatch::Source.file: #{Dispatch::Source.data2events(s.data)} (#{@fevent2})"
 	semaphore2.signal
 end
 file.print @msg
 file.flush
-semaphore2.wait
+semaphore2.wait(0.1)
 puts "fevent2: #{@fevent2} => [:write]"
 file_src2.cancel!
 
 file = File.open(filename, "r")
 @input = ""
-reader = Dispatch::Source.read(file, q) do |s|
+reader = Dispatch::Source.read(file) do |s|
 	@input << file.read(s.data)
 	puts "Dispatch::Source.read: #{s.data}: #{@input}"
 end
@@ -255,7 +263,7 @@
 reader.cancel!
 file = File.open(filename, "w")
 @next_char = 0
-writer = Dispatch::Source.write(file, q) do |s|
+writer = Dispatch::Source.write(file) do |s|
 	if @next_char < @msg.size then
 		char = @msg[@next_char]
 		file.write(char)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100715/3f9d1e21/attachment-0001.html>


More information about the macruby-changes mailing list