def process(udp_clients): client_ring = NodeRing(udp_clients) hash_codes = set() # PUT all users. for u in USERS: data_bytes, key = serialize_PUT(u) response = client_ring.get_hrw_node(key).send(data_bytes) print(response) hash_codes.add(str(response.decode())) print( f"Number of Users={len(USERS)}\nNumber of Users Cached={len(hash_codes)}" ) # GET all users. for hc in hash_codes: print(hc) data_bytes, key = serialize_GET(hc) response = client_ring.get_hrw_node(key).send(data_bytes) print(response)
def get_users(hc): myOb = NodeRing(NODES) data_bytes, key = serialize_GET(hc) # print(f'In GET {data_bytes},{key}') if bf.is_member(key): print("Data found in bloom filter") node = myOb.get_hrw_node(key) response = UDPClient(node['host'], node['port']).send(data_bytes) # print(f'{response} from server') else: print("Data not in bloom filter and probably not in server")
def delete_users(hc): myOb = NodeRing(NODES) data_bytes, key = serialize_DELETE(hc) node = myOb.get_hrw_node(key) if bf.is_member(key): response = UDPClient(node['host'], node['port']).send(data_bytes) if (response.decode() == 'Success'): print('Deleted Succesfully') bf.delete(key) else: print("Data not in bloom filter and probably not in server")
def post_users(): hash_codes = set() myOb = NodeRing(NODES) # PUT all users. for u in USERS: data_bytes, key = serialize_PUT(u) # TODO: PART II - Instead of going to server 0, use Naive hashing to split data into multiple servers node = myOb.get_hrw_node(key) print(f'sending data to port {(node)}') response = UDPClient(node['host'], node['port']).send(data_bytes) hash_codes.add(response) bf.add(response) print(f'Hash codes for all users: {hash_codes} {len(hash_codes)}') return hash_codes