PUT 一条回什么
按协议,handle 处理 PUT k v 交回什么?(bytes)
贯穿的应用层协议(一行一命令、按换行切):req(*parts) 用空格连、末尾加换行;decode(line) 拆成 (命令, 参数表);handle(store, line):PUT k v→OK、GET k→值或 NONE、DEL k→OK/NONE、其它→ERR。
def req(*parts):
return (" ".join(parts) + "\n").encode()
def decode(line):
bits = line.decode().split(" ")
return bits[0], bits[1:]
def handle(store, line):
# PUT k v -> OK;GET k -> 值 or NONE;DEL k -> OK/NONE;别的 -> ERR
cmd, args = decode(line)
if cmd == "PUT" and len(args) == 2:
store[args[0]] = args[1]
return b"OK\n"
if cmd == "GET" and len(args) == 1:
return (store.get(args[0], "NONE") + "\n").encode()
if cmd == "DEL" and len(args) == 1:
return (b"OK\n" if store.pop(args[0], None) is not None else b"NONE\n")
return b"ERR\n"
store = {}
print(handle(store, b"PUT k v"))
全部评论