140: def process_cmd line
141: case line.strip
142: when /^VALUE\s+(.+?)\s+(\d+)\s+(\d+)/
143: bytes = Integer($3)
144:
145:
146: if @buffer.size >= bytes + 2
147: @values[$1] = @buffer.slice!(0,bytes)
148: @buffer.slice!(0,2)
149: else
150: raise ParserError
151: end
152:
153: when Cend
154: if entry = @get_cbs.shift
155: keys, cb = entry
156: cb.call(@values)
157: end
158: @values = {}
159:
160: when Cstored
161: if cb = @set_cbs.shift
162: cb.call(true)
163: end
164:
165: when Cdeleted
166: if cb = @del_cbs.shift
167: cb.call(true)
168: end
169:
170: when Cunknown
171: if cb = @del_cbs.shift
172: cb.call(false)
173: end
174:
175: else
176: p [:MEMCACHE_UNKNOWN, line]
177: end
178: end