# File lib/em/protocols/postgres3.rb, line 152 152: def receive_data data 153: @data << data 154: while @data.length >= 5 155: pktlen = @data[1...5].unpack("N").first 156: if @data.length >= (1 + pktlen) 157: pkt = @data.slice!(0...(1+pktlen)) 158: m = StringIO.open( pkt, "r" ) {|io| PostgresPR::Message.read( io ) } 159: if @pending_conn 160: dispatch_conn_message m 161: elsif @pending_query 162: dispatch_query_message m 163: else 164: raise "Unexpected message from database" 165: end 166: else 167: break # very important, break out of the while 168: end 169: end 170: end