Method: Roma::Command::SystemCommandReceiver#ev_rset

Defined in:
lib/roma/command/sys_command_receiver.rb

#ev_rset(s) ⇒ Object

rset <key> <hash value> <timelimit> <length> “set” means “store this data”. <command name> <key> <digest> <exptime> <bytes> [noreply]rn <data block>rn



313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
# File 'lib/roma/command/sys_command_receiver.rb', line 313

def ev_rset(s)
  key,hname = s[1].split("\e")
  hname ||= @defhash
  d = s[2].to_i
  d = Digest::SHA1.hexdigest(key).hex % @rttable.hbits if d == 0
  data = read_bytes(s[5].to_i)
  read_bytes(2)
  vn = @rttable.get_vnode_id(d)
  unless @storages.key?(hname)
    send_data("SERVER_ERROR #{hname} does not exists.\r\n")
    return
  end
  if @storages[hname].rset(vn, key, d, s[3].to_i, s[4].to_i, data)
    send_data("STORED\r\n")
  else
    @log.error("rset NOT_STORED:#{@storages[hname].error_message} #{vn} #{s[1]} #{d} #{s[3]} #{s[4]}")
    send_data("NOT_STORED\r\n")
  end
  @stats.redundant_count += 1
end