from taskinit import casalog
from MPIEnvironment import MPIEnvironment
from MPICommunicator import MPICommunicator
def __init__(self,start_services=True):
""" Create MPIMonitorClient singleton instance """
casalog_call_origin = "MPIMonitorClient::__init__"
if not MPIEnvironment.is_mpi_enabled:
msg = "MPI is not enabled"
casalog.post(msg,"SEVERE",casalog_call_origin)
if not MPIEnvironment.is_mpi_client:
msg = "MPIMonitorClient can only be instantiated at master MPI process"
casalog.post(msg,"SEVERE",casalog_call_origin)
if MPIMonitorClient.__instance is None:
MPIMonitorClient.__instance = MPIMonitorClient.__MPIMonitorClientImpl(start_services=start_services)
self.__dict__['_MPIMonitorClient__instance'] = MPIMonitorClient.__instance
def __getattr__(self, attr):
""" Delegate access to MPIMonitorClient implementation """
return getattr(self.__instance, attr)
def __setattr__(self, attr, value):
""" Delegate access to MPIMonitorClient implementation """
return setattr(self.__instance, attr, value)
class __MPIMonitorClientImpl:
""" Implementation of the MPIMonitorClient singleton interface """
def __init__(self,start_services=True):