# File lib/protocols/postgres.rb, line 166
166:         def receive_data data
167:                 @data << data
168:                 while @data.length >= 5
169:                         pktlen = @data[1...5].unpack("N").first
170:                         if @data.length >= (1 + pktlen)
171:                                 pkt = @data.slice!(0...(1+pktlen))
172:                                 m = StringIO.open( pkt, "r" ) {|io| PostgresPR::Message.read( io ) }
173:                                 if @pending_conn
174:                                         dispatch_conn_message m
175:                                 elsif @pending_query
176:                                         dispatch_query_message m
177:                                 else
178:                                         raise "Unexpected message from database"
179:                                 end
180:                         else
181:                                 break # very important, break out of the while
182:                         end
183:                 end
184:         end