Example #1
0
 def __init__(self, refresh_rate=900.0):
     ImmortalThread.__init__(self, name='RAFD')
     if debug: print 'init RAFD Server '
     self.semaphore = Semaphore(0)
     self._scheduler = scheduler
     self.refresh_rate = refresh_rate
     scheduler.seconds_from_now_do(30.0, self._tick)
Example #2
0
class _RAFD_Thread(ImmortalThread):
    def __init__(self, refresh_rate=900.0):
        ImmortalThread.__init__(self, name='RAFD')
        if debug: print 'init RAFD Server '
        self.semaphore = Semaphore(0)
        self._scheduler = scheduler
        self.refresh_rate = refresh_rate
        scheduler.seconds_from_now_do(30.0, self._tick)

    def reincarnate(self):
        msglog.log('broadway', msglog.types.INFO, 'RAFD restarting\n')

    def run(self):
        if debug: print '_RAFD_Thread: run'
        while 1:
            self._tock()

    def _tick(self):  #also call this start ticking after a stop
        self.semaphore.release()
        scheduler.enabled = 1
        scheduler.seconds_from_now_do(self.refresh_rate, self._tick)
        if debug > 4:
            print 'RAFD tick'

    def _tock(self):
        while 1:
            try:
                self.semaphore.acquire()
                _module_lock.acquire()
                try:
                    if debug > 4:
                        print 'RAFD tock'
                    for k in BBMD_servers.keys():
                        b = BBMD_servers[k]
                        if b.register_as_foreign_device:
                            # send a new RAFD packet to remote BBMD
                            msg = RegisterForeignDevice(
                                None, self.refresh_rate)
                            if debug > 4: print 'RAFD update TTL'
                            b.bdt.distribute(k, None, msg)
                finally:
                    _module_lock.release()
            except:
                if msglog:
                    msglog.exception()
                    msglog.log('broadway', msglog.types.INFO,
                               'RAFD timer thread restarting\n')
                    pause(10.0)

    def _stop_ticking(self):
        if self._scheduler:
            self._scheduler.enabled = 0
Example #3
0
 def __init__(self, refresh_rate=900.0):
     ImmortalThread.__init__(self, name='RAFD')
     if debug: print 'init RAFD Server '
     self.semaphore = Semaphore(0)
     self._scheduler = scheduler
     self.refresh_rate = refresh_rate
     scheduler.seconds_from_now_do(30.0, self._tick)
Example #4
0
class _RAFD_Thread(ImmortalThread):
    def __init__(self, refresh_rate=900.0):
        ImmortalThread.__init__(self, name='RAFD')
        if debug: print 'init RAFD Server '
        self.semaphore = Semaphore(0)
        self._scheduler = scheduler
        self.refresh_rate = refresh_rate
        scheduler.seconds_from_now_do(30.0, self._tick)
    def reincarnate(self):
        msglog.log('broadway',msglog.types.INFO,
                    'RAFD restarting\n')
    def run(self):
        if debug: print '_RAFD_Thread: run'
        while 1:
            self._tock()
    def _tick(self):  #also call this start ticking after a stop
        self.semaphore.release()
        scheduler.enabled = 1
        scheduler.seconds_from_now_do(self.refresh_rate, self._tick)
        if debug > 4:
            print 'RAFD tick'
    def _tock(self):
        while 1:
            try:
                self.semaphore.acquire()
                _module_lock.acquire()
                try:
                    if debug > 4:
                        print 'RAFD tock'
                    for k in BBMD_servers.keys():
                        b = BBMD_servers[k]
                        if b.register_as_foreign_device:
                            # send a new RAFD packet to remote BBMD
                            msg = RegisterForeignDevice(None, self.refresh_rate)
                            if debug > 4: print 'RAFD update TTL'
                            b.bdt.distribute(k, None, msg)
                finally:
                    _module_lock.release()
            except:
                if msglog:
                    msglog.exception()
                    msglog.log('broadway', msglog.types.INFO,
                       'RAFD timer thread restarting\n')
                    pause(10.0)
    def _stop_ticking(self):
        if self._scheduler:
            self._scheduler.enabled = 0
Example #5
0
 def _start_ticking(self):
     if debug > 4:
         print 'start ticking'
     self.semaphore = Semaphore(0)
     self._scheduler = scheduler
     scheduler.seconds_from_now_do(1.0, self._tick)
     # @fixme Switching to Thread object caused
     #        mpx/lib/bacnet/_test_case_bvlc.py to hang after completing.
     #        Figure out why, and switch over the Thread object.
     threading._start_new_thread(self._tock, ())