[macruby-changes] [3639] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Feb 26 17:17:05 PST 2010


Revision: 3639
          http://trac.macosforge.org/projects/ruby/changeset/3639
Author:   ernest.prabhakar at gmail.com
Date:     2010-02-26 17:17:02 -0800 (Fri, 26 Feb 2010)
Log Message:
-----------
Rename Dispatch::Source.interval to periodic

Modified Paths:
--------------
    MacRuby/trunk/lib/dispatch/README.rdoc
    MacRuby/trunk/lib/dispatch/source.rb
    MacRuby/trunk/spec/macruby/library/dispatch/source_spec.rb

Modified: MacRuby/trunk/lib/dispatch/README.rdoc
===================================================================
--- MacRuby/trunk/lib/dispatch/README.rdoc	2010-02-27 00:52:41 UTC (rev 3638)
+++ MacRuby/trunk/lib/dispatch/README.rdoc	2010-02-27 01:17:02 UTC (rev 3639)
@@ -18,9 +18,9 @@
 
 Dispatch::Group:: Allows applications to track the progress of blocks submitted to queues and take action when the blocks complete.
 
-Dispatch::Source:: Monitors and coalesces low-level system events so that they can be responded to asynchronously via simple event handlers.
+Source:: Monitors and coalesces low-level system events so that they can be responded to asynchronously via simple event handlers.
 
-Dispatch::Semaphore:: Synchronizes threads via a combination of waiting and signalling.
+Semaphore:: Synchronizes threads via a combination of waiting and signalling.
 
 In addition, MacRuby 0.6 provides additional, higher-level abstractions and convenience APIs such as +Job+ and +Proxy+ via the "dispatch" library (i.e., +require 'dispatch'+).
 
@@ -242,9 +242,9 @@
 
 	(0..4).p_findall(3) { |i| i.odd?} # => 3
 
-== Dispatch::Sources: Asynchronous Events
+== Sources: Asynchronous Events
 
-In addition to scheduling blocks directly, GCD makes it easy to run a block in response to various system events via a Dispatch::Source, which supports:
+In addition to scheduling blocks directly, GCD makes it easy to run a block in response to various system events via a Source, which supports:
 
 * Timers
 * Signals
@@ -255,22 +255,26 @@
 	
 When the source “fires,” GCD will schedule the handler on the specific queue if it is not currently running, or -- more importantly -- coalesce pending events if it is. This provides excellent responsiveness without the expense of either polling or binding a thread to the event source.  Plus, since the handler is never run more than once at a time, the block doesn’t even need to be reentrant -- and thus you don't need to +synchronize+ any variables that are only used there.
 
-=== Dispatch::Source.interval
+=== Source.periodic
 
-For example, this is how you would create a timer that prints out the current time an +interval+ of 0.5 seconds:
+For example, this creates a +periodic+ timer that runs every 1.2 seconds and prints out the number of pending events:
 
-	source = Dispatch::Source.interval(0.5) { |s| puts Time.now }
-	sleep 2
+	source = Source.periodic(1.2) { |src| puts src.data }
+	sleep 3 # => 1 1
 
-=== Dispatch::Source#suspend!
+=== Source#data
 
-This would rapidly get annoying, so you can +suspend+ the source:
+As you can see above, the +handler+ block gets called with the source itself as a parameter.  
 
+=== Source#suspend!
+
+This would rapidly get annoying; to pause, just +suspend!+ the source:
+
 	source.suspend!
 
 You can suspend a source at any time to prevent it from executing new blocks, though this will not affect a block that is already being processed.
 
-=== Dispatch::Source#resume!
+=== Source#resume!
 
 If you change your mind, you can always +resume+ the source:
 
@@ -279,13 +283,13 @@
 
 If the +Source+ has fired one or more times, it will schedule a block containing the coalesced events. 
 
-=== Dispatch::Source#cancel!
+=== Source#cancel!
 
 Finally,  you can stop the source entirely by calling +cancel!+:
 
 	source.cancel!
 
-This is particularly important to do in MacRuby's implementation of GCD, since there is no other way to get rid of a source.  
+This is particularly important to do in MacRuby's implementation of GCD, since (due to garbage collection) there is no other way to get rid of a source.  
 
 ---
 = UNDER CONSTRUCTION = 

Modified: MacRuby/trunk/lib/dispatch/source.rb
===================================================================
--- MacRuby/trunk/lib/dispatch/source.rb	2010-02-27 00:52:41 UTC (rev 3638)
+++ MacRuby/trunk/lib/dispatch/source.rb	2010-02-27 01:17:02 UTC (rev 3639)
@@ -76,7 +76,7 @@
         Dispatch::Source.new(Dispatch::Source::VNODE, file, mask, queue, &block)
       end
 
-      def interval(seconds, queue = Dispatch::Queue.concurrent, &block)
+      def periodic(seconds, queue = Dispatch::Queue.concurrent, &block)
         Dispatch::Source.timer(0, seconds, 0, queue, &block)
       end
     end

Modified: MacRuby/trunk/spec/macruby/library/dispatch/source_spec.rb
===================================================================
--- MacRuby/trunk/spec/macruby/library/dispatch/source_spec.rb	2010-02-27 00:52:41 UTC (rev 3638)
+++ MacRuby/trunk/spec/macruby/library/dispatch/source_spec.rb	2010-02-27 01:17:02 UTC (rev 3639)
@@ -131,13 +131,13 @@
       end          
     end
 
-    describe "interval" do
+    describe "periodic" do
       it "fires with data on how often the timer has fired" do
         @count = -1
         repeats = 2
-        @interval = 0.02
-        @src = Dispatch::Source.interval(@interval, @q) {|s| @count += s.data}
-        sleep repeats*@interval
+        @periodic = 0.02
+        @src = Dispatch::Source.periodic(@periodic, @q) {|s| @count += s.data}
+        sleep repeats*@periodic
         @q.sync { }
         @count.should == repeats
       end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100226/fffe0578/attachment-0001.html>


More information about the macruby-changes mailing list