def process_cmd line
case line.strip
when /^VALUE\s+(.+?)\s+(\d+)\s+(\d+)/
bytes = Integer($3)
if @buffer.size >= bytes + 2
@values[$1] = @buffer.slice!(0,bytes)
@buffer.slice!(0,2)
else
raise ParserError
end
when Cend
if entry = @get_cbs.shift
keys, cb = entry
cb.call(@values)
end
@values = {}
when Cstored
if cb = @set_cbs.shift
cb.call(true)
end
when Cdeleted
if cb = @del_cbs.shift
cb.call(true)
end
when Cunknown
if cb = @del_cbs.shift
cb.call(false)
end
else
p [:MEMCACHE_UNKNOWN, line]
end
end