# File lib/em/protocols/line_and_text.rb, line 42
42:       def receive_data data
43:         if @lbp_mode == :lines
44:           begin
45:             @lpb_buffer.extract(data).each do |line| 
46:               receive_line(line.chomp) if respond_to?(:receive_line)
47:             end
48:           rescue Exception
49:             receive_error('overlength line') if respond_to?(:receive_error)
50:             close_connection
51:             return
52:           end
53:         else
54:           if @lbp_binary_limit > 0
55:             wanted = @lbp_binary_limit - @lbp_binary_bytes_received
56:             chunk = nil
57:             if data.length > wanted
58:               chunk = data.slice!(0...wanted)
59:             else
60:               chunk = data
61:               data = ""
62:             end
63:             @lbp_binary_buffer[@lbp_binary_bytes_received...(@lbp_binary_bytes_received+chunk.length)] = chunk
64:             @lbp_binary_bytes_received += chunk.length
65:             if @lbp_binary_bytes_received == @lbp_binary_limit
66:               receive_binary_data(@lbp_binary_buffer) if respond_to?(:receive_binary_data)
67:               lbp_init_line_state
68:             end
69:             receive_data(data) if data.length > 0
70:           else
71:             receive_binary_data(data) if respond_to?(:receive_binary_data)
72:             data = ""
73:           end
74:         end
75:       end