def read
@inbuffer << @sock.recv(@bufsize)
if !@prefix_found
if @inbuffer.size >= 4
sizest = @inbuffer.slice!(0..3)
@packet_size = sizest.unpack("N")[0]
@prefix_found = true
if @packet_size > @bufsize
@inbuffer = ""
@packet_size = 0
@prefix_found = false
log.warn "Discarding packet: Buffer size exceeded (PACKETSIZE=#{@packet_size} STRING='#{sizest}')"
return nil
end
else
return nil
end
end
if @prefix_found
if @inbuffer.size >= @packet_size
@prefix_found = false
ps = @packet_size
@packet_size = 0
return @inbuffer.slice!(0...ps).chop
else
return nil
end
end
end