예제 #1
0
        def __init__(self, start_services=True):

            # Initialize server status state
            self.__server_status_list = {}
            mpi_server_rank_list = MPIEnvironment.mpi_server_rank_list()
            for rank in mpi_server_rank_list:
                self.__server_status_list[rank] = {}
                self.__server_status_list[rank]['rank'] = rank
                self.__server_status_list[rank]['processor'] = None
                self.__server_status_list[rank]['pid'] = None
                self.__server_status_list[rank]['busy'] = False
                self.__server_status_list[rank]['command'] = None
                self.__server_status_list[rank]['command_start_time'] = None
                self.__server_status_list[rank]['pong_pending'] = False
                self.__server_status_list[rank]['ping_time'] = None
                self.__server_status_list[rank]['pong_time'] = None
                self.__server_status_list[rank]['timeout'] = False

            # Initialize monitor service state
            self.__monitor_status_service_on = False
            self.__monitor_status_service_running = False
            self.__monitor_status_service_thread = None

            # Initialize ping status response handler service state
            self.__ping_status_response_handler_service_on = False
            self.__ping_status_response_handler_service_running = False
            self.__ping_status_response_handler_service_thread = None

            # Instantiate MPICommunicator reference
            self.__communicator = MPICommunicator()

            # Automatically start services
            if start_services:
                self.start_services()
예제 #2
0
        def __init__(self, start_services=True):

            # Initialize status state dict
            self.__status = {}
            self.__status['rank'] = MPIEnvironment.mpi_processor_rank
            self.__status['processor'] = MPIEnvironment.hostname
            self.__status['pid'] = os.getpid()
            self.__status['busy'] = False
            self.__status['command'] = None
            self.__status['command_start_time'] = None
            self.__status['command_stop_time'] = None

            # Initialize ping status request handler service state
            self.__ping_status_request_handler_service_on = False
            self.__ping_status_request_handler_service_final_round = False
            self.__ping_status_request_handler_service_running = False
            self.__ping_status_request_handler_service_thread = None
            self.__last_ping_status_request_time = None
            self.__client_timeout = False

            # Instantiate MPICommunicator reference
            self.__communicator = MPICommunicator()

            # Automatically start services
            if start_services:
                self.start_services()
예제 #3
0
 def __init__(self,start_services=False):
     
     # Initialize life cycle state
     # 0-> Services not started
     # 1-> Services started
     # 2-> Stop service signal sent
     self.__life_cycle_state = 0
      
             
     # Initialize command request id counter and list
     self.__command_request_counter = 1
     self.__command_request_list = {}
     self.__command_response_list = {}
     
     # Initialize command group response state
     self.__command_group_response_counter = 1
     self.__command_group_response_list = {}            
     
     # Initialize command response handler service state
     self.__command_response_handler_service_on = False
     self.__command_response_handler_service_running = False
     self.__command_response_handler_service_thread = None 
     self.__command_response_handler_service_event_controller = threading.Event()       
     self.__command_response_handler_service_event_controller.clear()            
     
     # Initialize command request queue service state
     self.__command_request_queue = []
     self.__command_request_queue_service_on = False
     self.__command_request_queue_service_running = False
     self.__command_request_queue_service_thread = None             
     self.__command_request_queue_service_event_controller = threading.Event()       
     self.__command_request_queue_service_event_controller.clear()    
     
     # Setup a command request input queue to append the jobs
     # to be picked up by the command request queue service
     self.__command_request_input_queue = []
     self.__command_request_input_queue_lock = threading.Lock()
     
     # Instantiate MPICommunicator reference
     self.__communicator = MPICommunicator()
     
     # Instantiate MPIMonitorClient reference
     self.__monitor_client = MPIMonitorClient(False)            
     
     # Automatically start services
     if start_services:
         self.start_services()
         
     # Log mode
     self.__log_mode = 'unified'
         
     # Register exit handler
     # NOTE: It is not guaranteed that __del__() methods are called 
     #       for objects that still exist when the interpreter exits.
     atexit.register(self.stop_services,force_command_request_interruption=True)
예제 #4
0
 def __init__(self,start_services=False):
     
     # Initialize command request handler service state
     self.__command_request_handler_service_on = False
     self.__command_request_handler_service_running = False
     self.__command_request_handler_service_thread = None   
     
     # Instantiate MPICommunicator reference
     self.__communicator = MPICommunicator()
     
     # Instantiate MPIMonitorClient reference
     self.__monitor_server = MPIMonitorServer(False)
     
     # Initialize logfile descriptor
     self.__logfile_descriptor = open(casalog.logfile(), 'a')
     
     # Initialize virtual frame buffer state
     self.__virtual_frame_buffer_port = None
     self.__virtual_frame_buffer_process = None
     
     # Automatically start services
     if start_services:
         self.start_services()