def __init__(self, index, port, shared_clock): super().__init__() self.index = index self.port = int(port) self.shared_clock = shared_clock self.running = False self.socket = create_socket(1.0, self.port) self.logger = setup_logger(self.index)
def send_message(self, index, node): node_addr = (node["host"], node["port"]) clock = self.clock.get() sock = create_socket() callback_port = bind_random_port(sock) sock.sendto( f"{self.index} {clock} {self.host} {callback_port}".encode("utf-8"), node_addr, ) wait_response(sock, node_addr, 3.0) sock.close() self.logger.info(f"""{perf_counter_ns() // 1000} {self.index} {clock}{self.index} s {index}""")
def test_local_socket(self): import network try: a = network.create_socket() self.assertFalse(a == None) #Socket Creation Failed - Connection Refused b = network.create_socket() self.assertFalse(b == None) b.bind( ("0.0.0.0",25565) ) a.sendto("Passed",("localhost",25565)) data = b.recvfrom(4096)[0] log.debug("Packet test: "+ data) self.assertEqual(data,"Passed") except network.socket.error: self.assertTrue(False) #Socket creation failed - Exception Raised #close the socket - not part of the test try: a.close() except: pass
def login(fname, lname, anumber, alias, endpoint, label=None): if label==None: label=alias id = packet.ID() id.fname = fname id.lname = lname id.alias = alias id.anumber = anumber session = Session() #only ipv4 for now. Splits port from IP (address, port) = endpoint.split(":") port = eval(port) session.registry = (address,port) session.id = id while session.socket == None: session.socket = network.create_socket() log.info("Logging in") #While we're still waiting on a login reply, keep listening status = 0 while(session.login == False): network.send( session, packet.login_request(session.id, label) ) time.sleep(1) data = network.receive(session) if data==None: continue if(data["__type"] == "LoginReply:#Messages.ReplyMessages"): if(data["Success"]): log.info("Login succeeded") session.procinfo = data["ProcessInfo"] session.login = True else: log.error("Login failed") log.error("Error message was: "+ data["Note"]) return session else: log.warning("Unexpected packet received: " + str(data) ) return session