def __init__(self,HOST="localhost",PORT=9000): # Create the server, binding to localhost on port 9999 self.server = ThreadedServer((HOST, PORT), MyTCPHandler) self.tosend = PriorityQueue() # Activate the server; this will keep running until you # interrupt the program with Ctrl-C self.server_worker = WorkerManager() self.server_worker.set_target(self.server.serve_forever) self.server_worker.ishandler = False self.server_worker.ideal_threads = 1 self.server_worker.start() self.client_worker = WorkerManager() self.client_worker.set_target(self.sender_loop) self.client_worker.ideal_threads = 4 self.client_worker.start()
class NETWORK_SERVICE(object): def sender_loop(self, x): #print "sender loop", x priority, dest, msg = x self.client_send(dest,msg) def send_message(self,msg,dest): #print "send message called" msg_pack = (msg.priority,dest,msg) self.client_worker.putjob(msg_pack) def __init__(self,HOST="localhost",PORT=9000): # Create the server, binding to localhost on port 9999 self.server = ThreadedServer((HOST, PORT), MyTCPHandler) self.tosend = PriorityQueue() # Activate the server; this will keep running until you # interrupt the program with Ctrl-C self.server_worker = WorkerManager() self.server_worker.set_target(self.server.serve_forever) self.server_worker.ishandler = False self.server_worker.ideal_threads = 1 self.server_worker.start() self.client_worker = WorkerManager() self.client_worker.set_target(self.sender_loop) self.client_worker.ideal_threads = 4 self.client_worker.start() def stop(self): self.server.shutdown() self.server_worker.stop() self.client_worker.stop() def update_messages_in_queue(self, failed_node): hold = [] while not self.tosend.empty(): temp = self.tosend.get() self.tosend.task_done() if temp[1] == failed_node: node.message_failed(temp[2],temp[1]) else: hold.append(temp) for h in hold: self.tosend.put() def client_send(self, dest, msg): #print "sending", msg.service, msg.type, str(dest) HOST = dest.IPAddr PORT = dest.ctrlPort DATA = msg.serialize() ##print len(DATA) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(2.0) try: # Connect to server and send data sock.connect((HOST, PORT)) sock.send(DATA) sock.shutdown(1) ack = sock.recv(1) except socket.error: ##print e #sock.close() print "SOCKET ERROR" print "Tried to send to ", HOST, ":",PORT node.message_failed(msg,dest) #self.update_messages_in_queue(dest) finally: #print ">", sock.close() ##print DATA[-20:],len(DATA)%8 return True