# File lib/protocols/linetext2.rb, line 51
51:                         def receive_data data
52:                                 return unless (data and data.length > 0)
53: 
54:                                 # Do this stuff in lieu of a constructor.
55:                                 @lt2_mode ||= :lines
56:                                 @lt2_delimiter ||= "\n"
57:                                 @lt2_linebuffer ||= []
58: 
59:                                 if @lt2_mode == :lines
60:                                         if ix = data.index( @lt2_delimiter )
61:                                                 @lt2_linebuffer << data[0...ix]
62:                                                 ln = @lt2_linebuffer.join
63:                                                 @lt2_linebuffer.clear
64:                                                 if @lt2_delimiter == "\n"
65:                                                         ln.chomp!
66:                                                 end
67:                                                 receive_line ln
68:                                                 receive_data data[(ix+@lt2_delimiter.length)..-1]
69:                                         else
70:                                                 @lt2_linebuffer << data
71:                                         end
72:                                 elsif @lt2_mode == :text
73:                                         if @lt2_textsize
74:                                                 needed = @lt2_textsize - @lt2_textpos
75:                                                 will_take = if data.length > needed
76:                                                         needed
77:                                                 else
78:                                                         data.length
79:                                                 end
80: 
81:                                                 @lt2_textbuffer << data[0...will_take]
82:                                                 tail = data[will_take..-1]
83: 
84:                                                 @lt2_textpos += will_take
85:                                                 if @lt2_textpos >= @lt2_textsize
86:                                                         receive_binary_data @lt2_textbuffer.join
87:                                                         set_line_mode
88:                                                 end
89: 
90:                                                 receive_data tail
91:                                         else
92:                                                 receive_binary_data data
93:                                         end
94:                                 end
95:                         end