def run_client(self): return_queue = Queue.Queue() udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udp_socket.settimeout(1) self.map_name = select_map_file() self.map_storage.getChunkGridFormFile(self.map_name) self.target_list, self.pos = self.map_storage.getBotTargetCoords() send_message(udp_socket, self.address, self.id, 'server', MT.CLIENT_HELLO_REQUEST, 'client_hello_msg') print "Hello msg to server sent" print "start request_thread" request_thread = Thread(target=self.threads.request_waiting_thread, args=( self, udp_socket, return_queue, )) request_thread.start() self.start_flows(udp_socket) while self.threads.client_connection: user_input = raw_input("Input command: ") self.process_user_input(user_input, udp_socket) request_thread.join()
def process_user_input(self, user_input, udp_socket): if user_input == "quit": send_message(udp_socket, self.address, self.id, 'server', MT.CLIENT_QUIT, "quit") self.threads.client_connection = False print "close connection client" return if user_input == "get_map": map_data = self.get_map() print "current map is: %s\n" % map_data return if user_input == "send_map": self.send_map(udp_socket) print 'map send' return if user_input == "show_trg": print 'target list is: %s' % str(self.target_list) return if user_input == "show_pos": print 'self pos is: %s' % str(self.pos) return if user_input == "update_map": self.map_storage.getChunksFromFile(self.map_name) self.update_map(udp_socket) print "map update request sent" return if user_input == "trg_dst": self.target_distribution(udp_socket) return if user_input == "start_td_flow": if self.threads.target_distribution_flow_thread_is_run: print "target distribution is already started" return self.threads.target_distribution_flow_thread_is_run = True self.target_distribution_flow_thread = Thread( target=self.threads.target_distribution_flow_thread, args=( self, udp_socket, )) self.target_distribution_flow_thread.start() print "target distribution is start" return if user_input == "stop_td_flow": if not self.threads.target_distribution_flow_thread_is_run: print "target distribution is not start" return self.threads.target_distribution_flow_thread_is_run = False self.target_distribution_flow_thread.join() print "target distribution is stop" return if user_input == "start_update_flow": if self.threads.update_traffic_flow_thread_is_run: print "map update flow is already started" return self.threads.update_traffic_flow_thread_is_run = True self.update_traffic_flow_thread = Thread( target=self.threads.update_traffic_flow_thread, args=( self, udp_socket, )) self.update_traffic_flow_thread.start() print "map update flow is start" return if user_input == "stop_update_flow": if not self.threads.update_traffic_flow_thread_is_run: print "map update flow is not start" return self.threads.update_traffic_flow_thread_is_run = False self.update_traffic_flow_thread.join() print "map update flow is stop" return
def send_map_flow(self, udp_socket): map_data = self.get_map() send_message(udp_socket, self.address, self.id, 'all', MT.SEND_MAP_NOLOG, map_data)
def update_map(self, udp_socket): map_chunks = self.map_storage.getChunksGrid() send_message(udp_socket, self.address, self.id, 'all', MT.MAP_UPDATE_REQUEST, [map_chunks, self.pos])
def bots_matrix_string_request(self, udp_socket): request_data = str(self.target_dstr_storage.getSelfMatrixString()) send_message(udp_socket, self.address, self.id, 'all', MT.MATRIX_STRING_REQUEST, request_data)