[macruby-changes] [3145] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Tue Dec 22 10:08:14 PST 2009


Revision: 3145
          http://trac.macosforge.org/projects/ruby/changeset/3145
Author:   ernest.prabhakar at gmail.com
Date:     2009-12-22 10:08:11 -0800 (Tue, 22 Dec 2009)
Log Message:
-----------
Remove old Dispatch::Source code, pass preliminary spec for custom sources

Modified Paths:
--------------
    MacRuby/trunk/gcd.c
    MacRuby/trunk/spec/macruby/core/gcd/source_spec.rb

Modified: MacRuby/trunk/gcd.c
===================================================================
--- MacRuby/trunk/gcd.c	2009-12-22 16:39:08 UTC (rev 3144)
+++ MacRuby/trunk/gcd.c	2009-12-22 18:08:11 UTC (rev 3145)
@@ -729,107 +729,6 @@
     return self;
 }
 
-
-/* 
- *  call-seq:
- *    Dispatch::Source.for_reading(queue, io, &block)    =>  Dispatch::Source
- *
- *  Returns a Source that monitors the passed IO object for pending data. 
- *	When provided with a valid on_event handler, the source will call the 
- *	handler on the provided queue whenever it sees that data becomes available from the source's
- *	underlying file descriptor. If the on_event handler takes a parameter,
- *	that parameter will be an integer corresponding to an estimated number of
- *	bytes available to be read. See the dispatch_source_create(3) manpage for details.
- *  All Sources start out suspended; in order to activate them, call <code>resume!</code>.
- *	If for_reading is given a block, the block shall be registered as the 
- *  source's event handler.
- *
- *  
- *     file = File.new('testfile')
- *	   queue = Queue.new('org.macruby.documentation')
- *	   reader = Source.for_reading(queue, file) do { |x| puts "#{x} bytes available"}
- *
- */
-
-#if 0 // TODO: Decide if we want to include these
-
-static VALUE
-rb_source_new_for_reading(VALUE klass, SEL sel, VALUE queue, VALUE io)
-{
-    VALUE src = rb_source_alloc(klass, sel);
-    io = rb_check_convert_type(io, T_FILE, "IO", "to_io");
-    Check_Queue(queue);
-    RSource(src)->source = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, 
-	    ExtractIOStruct(io)->fd, 0, RQueue(queue)->queue);
-    RSource(src)->type = DISPATCH_SOURCE_TYPE_READ;
-
-    if (rb_block_given_p()) {
-	rb_source_on_event(src, 0);
-    }
-
-    return src;
-}
-
-static VALUE
-rb_source_new_for_writing(VALUE klass, SEL sel, VALUE queue, VALUE io)
-{
-    VALUE src = rb_source_alloc(klass, sel);
-    io = rb_check_convert_type(io, T_FILE, "IO", "to_io");
-    Check_Queue(queue);
-    RSource(src)->source = dispatch_source_create(DISPATCH_SOURCE_TYPE_WRITE, 
-	    ExtractIOStruct(io)->fd, 0, RQueue(queue)->queue);
-    RSource(src)->type = DISPATCH_SOURCE_TYPE_WRITE;
-    
-    if (rb_block_given_p()) {
-        rb_source_on_event(src, 0);
-    }
-    
-    return src;
-}
-
-static VALUE
-rb_source_new_timer(VALUE klass, SEL sel, int argc, VALUE* argv)
-{
-    dispatch_time_t start_time;
-    VALUE queue = Qnil, interval = Qnil, delay = Qnil, leeway = Qnil;
-    rb_scan_args(argc, argv, "31", &queue, &delay, &interval, &leeway);
-    Check_Queue(queue);
-    if (NIL_P(leeway)) {
-        leeway = INT2FIX(0);
-    }
-    if (NIL_P(delay)) {
-        start_time = DISPATCH_TIME_NOW;
-    }
-    else {
-        start_time = rb_num2timeout(delay);
-    }
-    const uint64_t dispatch_interval = rb_num2nsec(interval);
-    const uint64_t dispatch_leeway = rb_num2nsec(leeway);
-
-    VALUE src = rb_source_alloc(klass, sel);
-    RSource(src)->source = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,
-	    0, 0, RQueue(queue)->queue);
-    RSource(src)->type = DISPATCH_SOURCE_TYPE_TIMER;
-    dispatch_source_set_timer(RSource(src)->source, start_time,
-	    dispatch_interval, dispatch_leeway);
-    
-    if (rb_block_given_p()) {
-	rb_source_on_event(src, 0);
-    }
-    
-    return src;
-}
-
-static inline bool 
-source_type_takes_parameters(dispatch_source_type_t t)
-{
-    return ((t == DISPATCH_SOURCE_TYPE_READ)    || 
-            (t == DISPATCH_SOURCE_TYPE_SIGNAL)  || 
-            (t == DISPATCH_SOURCE_TYPE_TIMER)   || 
-            (t == DISPATCH_SOURCE_TYPE_PROC));
-}
-#endif
-
 static void
 rb_source_event_handler(void* sourceptr)
 {
@@ -1032,17 +931,6 @@
     rb_define_const(cSource, "WRITE", INT2NUM(SOURCE_TYPE_WRITE));
     rb_objc_define_method(*(VALUE *)cSource, "alloc", rb_source_alloc, 0);
     rb_objc_define_method(cSource, "initialize", rb_source_init, 4);
-    #if 0 // TODO: Decide if we want to include these
-    //    rb_undef_method(*(VALUE *)cSource, "new");
-    rb_objc_define_method(*(VALUE *)cSource, "for_reading", rb_source_new_for_reading, 2);
-    rb_objc_define_method(*(VALUE *)cSource, "for_writing", rb_source_new_for_writing, 2);
-    //rb_objc_define_method(*(VALUE *)cSource, "for_process", rb_source_new_for_process, 2);
-    //rb_objc_define_method(*(VALUE *)cSource, "for_vnode", rb_source_new_for_vnode, 2)
-    //rb_objc_define_method(*(VALUE *)cSource, "custom", rb_source_new_custom, 2);
-    //rb_objc_define_method(*(VALUE *)cSource, "for_mach", rb_source_new_for_mach, 3);
-    //rb_objc_define_method(*(VALUE *)cSource, "for_signal", rb_source_new_for_signal, 2),
-    rb_objc_define_method(*(VALUE *)cSource, "timer", rb_source_new_timer, -1);
-    #endif
     rb_objc_define_method(cSource, "on_event", rb_source_on_event, 0);
     rb_objc_define_method(cSource, "on_cancel", rb_source_on_cancellation, 0);
     rb_objc_define_method(cSource, "cancelled?", rb_source_cancelled_p, 0);

Modified: MacRuby/trunk/spec/macruby/core/gcd/source_spec.rb
===================================================================
--- MacRuby/trunk/spec/macruby/core/gcd/source_spec.rb	2009-12-22 16:39:08 UTC (rev 3144)
+++ MacRuby/trunk/spec/macruby/core/gcd/source_spec.rb	2009-12-22 18:08:11 UTC (rev 3145)
@@ -30,13 +30,23 @@
         Dispatch::Source.const_defined?(:MACH_RECV).should == false
       end
     end
-    
-    describe "event handler" do
+
+    describe "new" do
       before :each do
         @q = Dispatch::Queue.concurrent
-        @src = Dispatch::Source.new() #@type, @handle, mask, @q
       end
 
+      it "creates a custom Source" do
+        Dispatch::Source.new(Dispatch::Source::DATA_ADD, 0,  0, @q).should
+          be_kind_of(Dispatch::Source)
+        Dispatch::Source.new(Dispatch::Source::DATA_OR, 0,  0, @q).should
+          be_kind_of(Dispatch::Source)
+      end    
+      
+    end
+      
+    describe "event handler" do
+
       it "can be set" do
         true.should == false
       end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20091222/602acbfd/attachment.html>


More information about the macruby-changes mailing list