def echo_client(address): sock = socket(AF_INET, SOCK_STREAM) sock.connect(address) while True: data = input("message > ") msg = data.encode('utf-8') msgpass.send_message(sock, msg) response = msgpass.recv_message(sock) print('response:', response)
def handle_client(client): while True: msg = msgpass.recv_message(client) method, args = decode_request(msg) print('request:', method, args) try: with client_lock: # guaranteed that only one thread at a time is in here if method == 'get': result = get(*args) elif method == 'set': set(*args) result = "ok" elif method == "delete": delete(*args) else: raise RuntimeError(f"Bad method {method}") except: result = ("error", err) msgpass.send_message(client, encode_result(result) )
def set(self, key, value): msgpass.send_message(self.sock, encode_request('set', key, value)) resp = msgpass.recv_message(self.sock) return decode_result(resp)
def delete(self, key): msgpass.send_message(self.sock, encode_request('delete', key)) resp = msgpass.recv_message(self.sock) return decode_result(resp)
def do_request(*args): msgpass.send_message(self.sock, encode_request(method, *args)) resp = msgpass.recv_message(self.sock) return decode_result(resp)