Пример #1
0
    def __init__(self, logger):
        self.logger = logger
        self.parser = CommandParser.CommandParser()

        self.para_lexer = para_lexer.paraScanner(logger=logger, debug=0)
        self.para_parser = paraParser(self.para_lexer, logger=logger,
                                      debug=0)

        self.para = Bunch.threadSafeBunch()
        self.userRegMap = Bunch.threadSafeBunch()
        self.systemRegMap = Bunch.threadSafeBunch()
        self.commandRegMap = Bunch.threadSafeBunch()
Пример #2
0
    def __init__(self, logger, env, ev_quit=None):

        super(SCEXAO, self).__init__()

        self.logger = logger
        self.env = env
        self.ev_quit = ev_quit
        self.insname = 'SCEXAO'

        # Holds our link to OCS delegate object
        self.ocs = None

        # Thread-safe bunch for storing parameters read/written
        # by threads executing in this object
        self.param = Bunch.threadSafeBunch()

        # Interval between status packets (secs)
        self.param.status_interval = 60.0

        # status we are interested in
        self.s_aliases = [
            'FITS.SBR.RA',
            'FITS.SBR.DEC',
            'FITS.SBR.EQUINOX',
            'FITS.SBR.HA',
            'FITS.SBR.AIRMASS',
            'TSCS.AZ',
            'TSCS.EL',
            # add more here if you like
        ]
Пример #3
0
    def __init__(self, logger, env, ev_quit=None):

        super(SIMCAM, self).__init__()

        self.logger = logger
        self.env = env
        # Convoluted but sure way of getting this module's directory
        self.mydir = os.path.split(sys.modules[__name__].__file__)[0]

        if not ev_quit:
            self.ev_quit = threading.Event()
        else:
            self.ev_quit = ev_quit

        # Holds our link to OCS delegate object
        self.ocs = None

        # We define our own modes that we report through status
        # to the OCS
        self.mode = 'default'

        # Thread-safe bunch for storing parameters read/written
        # by threads executing in this object
        self.param = Bunch.threadSafeBunch()

        # Interval between status packets (secs)
        self.param.status_interval = 10.0
Пример #4
0
    def __init__(self, sk_basedir, logger=None):
        if logger:
            self.logger = logger
        else:
            self.logger = logging.getLogger('sk.skbank')

        # Base directory of sk files
        self.sk_basedir = sk_basedir
        self.cache = Bunch.threadSafeBunch()

        lexer = sk_lexer.skScanner(logger=self.logger,
                                   debug=0,
                                   lextab='scan1_tab')
        self.param_parser = sk_parser.paramParser(lexer, logger=self.logger)
        self.param_parser.build(debug=0, tabmodule='param_parser_tab')
        self.param_parser.reset()

        lexer = sk_lexer.skScanner(logger=self.logger,
                                   debug=0,
                                   lextab='scan2_tab')
        self.ope_parser = sk_parser.opeParser(lexer, logger=self.logger)
        self.ope_parser.build(debug=0, tabmodule='ope_parser_tab')
        self.ope_parser.reset()

        lexer = sk_lexer.skScanner(logger=self.logger,
                                   debug=0,
                                   lextab='scan3_tab')
        self.sk_parser = sk_parser.skParser(lexer, logger=self.logger)
        self.sk_parser.build(debug=0, tabmodule='sk_parser_tab')
        self.sk_parser.reset()
Пример #5
0
    def __init__(self, logger, env, ev_quit=None):

        super(PFS, self).__init__()

        self.logger = logger
        self.env = env
        # Convoluted but sure way of getting this module's directory
        self.mydir = os.path.split(sys.modules[__name__].__file__)[0]

        if not ev_quit:
            self.ev_quit = threading.Event()
        else:
            self.ev_quit = ev_quit

        # Holds our link to OCS delegate object
        self.ocs = None

        # We define our own modes that we report through status
        # to the OCS
        self.mode = 'default'

        # Thread-safe bunch for storing parameters read/written
        # by threads executing in this object
        self.param = Bunch.threadSafeBunch()

        # Interval between status packets (secs)
        self.param.status_interval = 10.0

        self.frameType = 'A'
Пример #6
0
    def __init__(self, name, logger,  
                 ev_quit=None, threadPool=None, numthreads=15,
                 outlimit=5):
        """
        Constructor for the PubSubBase class.
            name        pubsub name
            logger      logger to be used for any diagnostic messages
            threadPool  optional, threadPool for serving PubSub activities
            numthreads  if a threadPool is NOT furnished, the number of
                          threads to allocate
        """

        super(PubSubBase, self).__init__()

        self.logger = logger
        self.name = name
        self.numthreads = numthreads
        self.outlimit = outlimit

        # Handles to subscriber remote proxies
        self._partner = {}
        # Defines aggregate channels
        self.aggregates = Bunch.threadSafeBunch()

        # Termination event
        if not ev_quit:
            ev_quit = threading.Event()
        self.ev_quit = ev_quit
        
        # If we were passed in a thread pool, then use it.  If not,
        # make one.  Record whether we made our own or not.
        if threadPool != None:
            self.threadPool = threadPool
            self.mythreadpool = False

        else:
            self.threadPool = Task.ThreadPool(logger=self.logger,
                                              ev_quit=self.ev_quit,
                                              numthreads=self.numthreads)
            self.mythreadpool = True
            
        # For task inheritance:
        self.tag = 'PubSub'
        self.shares = ['logger', 'threadPool']

        # For handling subscriber info 
        self._lock = threading.RLock()
        self._sub_info = {}

        # number of seconds to wait before unsubscribing a subscriber
        # who is unresponsive
        self.failure_limit = 60.0

        self.cb_subscr_cnt = 0
        self.outbound_sem = threading.BoundedSemaphore(self.outlimit)