def time_out(self): ProcessStatMgr.check_process_stat() if self.__start_process_flag > 0: self.__start_process_flag -= 1 else: ProcessStatMgr.timer_process()
def handle_cmd(self, frame): """ Method: handle_cmd Description: 处理握手消息 Parameter: frame: 握手消息 Return: Others: """ process_name = frame.get_data(0) statflag = frame.get_data(1) if statflag != bf.BasicApp.SHAKEHAND_STOPPING: ack_datas = ProcessStatMgr.get_shakehand_ack(process_name) self.get_worker().send_ack(frame, ack_datas) ProcessStatMgr.on_process_shakehand(frame.get_sender_pid(), process_name, statflag)
def __load_app_info(self): # 初始化进程的启动信息 ret = self.__load_install_info() if ret != 0: tracelog.error("_load_install_info() failed.") return ret all_app_info = self._install_info.get_app_info() for app in all_app_info: if app.get_service_name() == self.get_app().get_service_name(): continue # 根据配置文件中的相对位置,获取绝对位置 program_path = os.path.join(self.get_app().get_app_top_path() , app.get_program_path()) for i in xrange(app.get_instance_num()): ProcessStatMgr.add_process('%s_%s'%(app.get_service_name(), i) , i , app.is_auto_run_on_master() , app.is_auto_run_on_slave() , app.is_exclude() , program_path) return 0
def time_out(self): master_monitor_pid = self.get_worker().get_pid("Monitor", bf.MASTER_PID) if master_monitor_pid == bf.INVALID_PID: # 此时master可能还没有判决出来 return # 通知名字服务进程信息 msg = name_msg_def.NotifyRunningPidsMsg() msg.running_pids = ProcessStatMgr.get_running_process_pids() frame = bf.AppFrame() frame.set_cmd_code(monitor_cmd_code.CMD_NOTIFI_RUNNING_PIDS) frame.set_receiver_pid(master_monitor_pid) frame.add_data(msg.serialize()) self.get_worker().dispatch_frame_to_process_by_pid(frame.get_receiver_pid(), frame)