def fwmkeys(prefix, max = -1)
prefix = _argstr(prefix)
max = _argnum(max)
if !@sock
@ecode = EINVALID
return Array::new
end
sbuf = [0xC8, 0x58, prefix.length, max].pack("CCNN")
sbuf += prefix
if !_send(sbuf)
@ecode = ESEND
return Array::new
end
code = _recvcode
if code == -1
@ecode = ERECV
return Array::new
end
if code != 0
@ecode = ENOREC
return Array::new
end
knum = _recvint32
if knum < 0
@ecode = ERECV
return Array::new
end
keys = Array::new
for i in 1..knum
ksiz = _recvint32()
if ksiz < 0
@ecode = ERECV
return Array::new
end
kbuf = _recv(ksiz)
if !kbuf
@ecode = ERECV
return Array::new
end
keys.push(_retstr(kbuf))
end
return keys
end