# File lib/em/protocols/postgres3.rb, line 151 def receive_data data @data << data while @data.length >= 5 pktlen = @data[1...5].unpack("N").first if @data.length >= (1 + pktlen) pkt = @data.slice!(0...(1+pktlen)) m = StringIO.open( pkt, "r" ) {|io| PostgresPR::Message.read( io ) } if @pending_conn dispatch_conn_message m elsif @pending_query dispatch_query_message m else raise "Unexpected message from database" end else break # very important, break out of the while end end end