Changeset 724

Show
Ignore:
Timestamp:
06/22/08 05:09:39 (5 months ago)
Author:
francis
Message:

added receive_end_of_binary_data. Not really necessary but might come in handy someday.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/protocols/linetext2.rb

    r668 r724  
    8585                                                if @lt2_textpos >= @lt2_textsize 
    8686                                                        receive_binary_data @lt2_textbuffer.join 
     87                                                        receive_end_of_binary_data 
    8788                                                        set_line_mode 
    8889                                                end 
     
    140141                                # no-op 
    141142                        end 
     143 
     144                        # Stub. Should be subclassed by user code. 
     145                        # This is called when transitioning internally from text mode 
     146                        # back to line mode. Useful when client code doesn't want 
     147                        # to keep track of how much data it's received. 
     148                        def receive_end_of_binary_data 
     149                                # no-op 
     150                        end 
    142151                end 
    143152        end 
  • trunk/tests/test_ltp2.rb

    r668 r724  
    258258        end 
    259259 
     260 
     261 
     262        # Test an end-of-binary call. Arrange to receive binary data but don't bother counting it 
     263        # as it comes. Rely on getting receive_end_of_binary_data to signal the transition back to 
     264        # line mode. 
     265        # At the present time, this isn't strictly necessary with sized binary chunks because by 
     266        # definition we accumulate them and make exactly one call to receive_binary_data, but 
     267        # we may want to support a mode in the future that would break up large chunks into multiple 
     268        # calls. 
     269        class LazyBinary 
     270                include EM::Protocols::LineText2 
     271                attr_reader :data, :end 
     272                def initialize *args 
     273                        super 
     274                        @data = "" 
     275                        set_text_mode 1000 
     276                end 
     277                def receive_binary_data data 
     278                        # we expect to get all the data in one chunk, even in the byte-by-byte case, 
     279                        # because sized transfers by definition give us exactly one call to 
     280                        # #receive_binary_data. 
     281                        @data = data 
     282                end 
     283                def receive_end_of_binary_data 
     284                        @end = true 
     285                end 
     286        end 
     287        def test_receive_end_of_binary_data 
     288                testdata = "_" * 1000 
     289                a = LazyBinary.new 
     290                testdata.length.times {|i| a.receive_data( testdata[i...i+1] ) } 
     291                assert_equal( "_" * 1000, a.data ) 
     292                assert( a.end ) 
     293        end 
    260294end 
    261295