def __init__(self): """ Initialize render server """ SignalThread.__init__(self, name='RenderServerThread') self.daemon = True self.stop_flag = False self.jobs_lock = threading.Lock() self.nodes_lock = threading.Lock() # Store both of list and dict to be able: # 1. Review nodes/jobs in order they were registered # 2. Get plain lists fast for web-unterface # 3. Fast accessing by UUID # 4. Use priorited jobs # # Fill free to use something smarter ;) self.nodes = [] self.nodes_hash = {} self.jobs = [] self.jobs_hash = {} # list of fully completed jobs self.completed_jobs = [] self.prepareStorage()
def __init__(self): QObject.__init__(self, None) self._mainthreadid = QThread.currentThreadId() self._signalthread = SignalThread() QObject.connect(self._signalthread, SIGNAL("triggerSignal()"), self.sensorQueueChanged) self._idletimer = QTimer() self._delaytimer = QTimer() self._timerqueuetimer = QTimer() self._idletimer.setSingleShot(True) self._delaytimer.setSingleShot(True) self._timerqueuetimer.setSingleShot(True) self.connect(self._idletimer, SIGNAL("timeout()"), self.idleTimeout) self.connect(self._delaytimer, SIGNAL("timeout()"), self.delayTimeout) self.connect(self._timerqueuetimer, SIGNAL("timeout()"), self.timerQueueTimeout) SoDB.getSensorManager().setChangedCallback(self.sensorQueueChangedCB, self) SoDB.setRealTimeInterval(1.0 / 25.0) SoRenderManager.enableRealTimeUpdate(False)
def __init__(self): """ Initialize render server """ SignalThread.__init__(self, name="RenderServerThread") self.daemon = True self.stop_flag = False self.jobs_lock = threading.Lock() self.nodes_lock = threading.Lock() # Store both of list and dict to be able: # 1. Review nodes/jobs in order they were registered # 2. Get plain lists fast for web-unterface # 3. Fast accessing by UUID # 4. Use priorited jobs # # Fill free to use something smarter ;) self.nodes = [] self.nodes_hash = {} self.jobs = [] self.jobs_hash = {} # list of fully completed jobs self.completed_jobs = [] self.prepareStorage()
def __init__(self, node): """ Initialize sender """ SignalThread.__init__(self, name='LogSenderThread') self.buffer = '' self.buffer_lock = threading.Lock() self.stop_flag = False self.node = node
def __init__(self, node): """ Initialize sender """ SignalThread.__init__(self, name='TaskSenderThread') self.tasks = [] self.stop_flag = False self.task_lock = threading.Lock() self.node = node
def __init__(self): """ Initialize render node """ SignalThread.__init__(self, name='RenderNodeThread') self.stop_flag = False self.uuid = None self.currentTask = None self.host_info = self.collectHostInfo() self.taskSender = TaskSender(self)
def __init__(self, address): """ Initialize XML-RPC server """ SignalThread.__init__(self, name='XMLRPCServerThread') xmlrpc.server.SimpleXMLRPCServer.__init__(self, address, XMLRPCRequestHandler) self.handlers = XMLRPCHandlers() self.register_instance(self.handlers) self.address = address self.allow_dotted_names = True self.stop_flag = False self.register_function(lambda client_info: 'OK', 'ping')
def __init__(self, address): """ Initialize stoppable HTTP server for renderfarm """ http.server.HTTPServer.__init__(self, address, HTTPRequestHandler) SignalThread.__init__(self, name='HTTPServerThread') self.daemon = True self.address = address self.stop_flag = False program_startup = os.path.abspath(os.path.dirname(sys.argv[0])) fpath = os.path.join(program_startup, 'web') self.site_root = os.path.realpath(fpath)
def __init__(self, options): """ Initialize task """ SignalThread.__init__(self, name='RenderTaskThread') self.jobUUID = options['jobUUID'] self.task = options['task'] self.options = options # Runtime calculated fields self.fpath = None self.output_fpath = None self.pipe = None self.finishFlag = False self.errorFlag = False self.environ = spawnNewEnviron(options)
class SensorManager(QObject): def __init__(self): QObject.__init__(self, None) self._mainthreadid = QThread.currentThreadId() self._signalthread = SignalThread() QObject.connect(self._signalthread, SIGNAL("triggerSignal()"), self.sensorQueueChanged) self._idletimer = QTimer() self._delaytimer = QTimer() self._timerqueuetimer = QTimer() self._idletimer.setSingleShot(True) self._delaytimer.setSingleShot(True) self._timerqueuetimer.setSingleShot(True) self.connect(self._idletimer, SIGNAL("timeout()"), self.idleTimeout) self.connect(self._delaytimer, SIGNAL("timeout()"), self.delayTimeout) self.connect(self._timerqueuetimer, SIGNAL("timeout()"), self.timerQueueTimeout) SoDB.getSensorManager().setChangedCallback(self.sensorQueueChangedCB, self) SoDB.setRealTimeInterval(1.0 / 25.0) SoRenderManager.enableRealTimeUpdate(False) def __del__(self): SoDB.getSensorManager().setChangedCallback(None, None) if self._signalthread.isRunning(): self._signalthread.stopThread() self._signalthread.wait() def sensorQueueChangedCB(self, closure): # if we get a callback from another thread, route the callback # through SignalThread so that we receive the callback in the # QApplication thread (needed since QTimer isn't thread safe) if QThread.currentThreadId() != closure._mainthreadid: if not closure._signalthread.isRunning(): closure._signalthread.start() self._signalthread.trigger() else: self.sensorQueueChanged() def sensorQueueChanged(self): sensormanager = SoDB.getSensorManager() assert (sensormanager) interval = sensormanager.isTimerSensorPending() if interval: interval -= SbTime.getTimeOfDay() if interval.getValue() <= 0.0: interval.setValue(1.0 / 5000.0) if not self._timerqueuetimer.isActive(): # FIXME jkg: frodo changed this to time.getMsecValue() in C++ Quarter. test and apply. self._timerqueuetimer.start(interval.getMsecValue()) else: self._timerqueuetimer.setInterval(interval.getMsecValue()) elif self._timerqueuetimer.isActive(): self._timerqueuetimer.stop() if sensormanager.isDelaySensorPending(): self._idletimer.start(0) if not self._delaytimer.isActive(): time = SoDB.getDelaySensorTimeout() if time != SbTime.zero(): self._delaytimer.start(interval.getMsecValue()) else: if self._idletimer.isActive(): self._idletimer.stop() if self._delaytimer.isActive(): self._delaytimer.stop() def idleTimeout(self): SoDB.getSensorManager().processTimerQueue() SoDB.getSensorManager().processDelayQueue(True) self.sensorQueueChanged() def timerQueueTimeout(self): SoDB.getSensorManager().processTimerQueue() self.sensorQueueChanged() def delayTimeout(self): SoDB.getSensorManager().processTimerQueue() SoDB.getSensorManager().processDelayQueue(False) self.sensorQueueChanged()
class SensorManager(QObject): def __init__(self): QObject.__init__(self, None) self._mainthreadid = QThread.currentThreadId() self._signalthread = SignalThread() QObject.connect(self._signalthread, SIGNAL("triggerSignal()"), self.sensorQueueChanged) self._idletimer = QTimer() self._delaytimer = QTimer() self._timerqueuetimer = QTimer() self._idletimer.setSingleShot(True) self._delaytimer.setSingleShot(True) self._timerqueuetimer.setSingleShot(True) self.connect(self._idletimer, SIGNAL("timeout()"), self.idleTimeout) self.connect(self._delaytimer, SIGNAL("timeout()"), self.delayTimeout) self.connect(self._timerqueuetimer, SIGNAL("timeout()"), self.timerQueueTimeout) SoDB.getSensorManager().setChangedCallback(self.sensorQueueChangedCB, self) SoDB.setRealTimeInterval(1.0 / 25.0) SoRenderManager.enableRealTimeUpdate(False) def __del__(self): SoDB.getSensorManager().setChangedCallback(None, None) if self._signalthread.isRunning(): self._signalthread.stopThread() self._signalthread.wait() def sensorQueueChangedCB(self, closure): # if we get a callback from another thread, route the callback # through SignalThread so that we receive the callback in the # QApplication thread (needed since QTimer isn't thread safe) if QThread.currentThreadId() != closure._mainthreadid: if not closure._signalthread.isRunning(): closure._signalthread.start() self._signalthread.trigger() else: self.sensorQueueChanged() def sensorQueueChanged(self): sensormanager = SoDB.getSensorManager() assert(sensormanager) interval = sensormanager.isTimerSensorPending() if interval: interval -= SbTime.getTimeOfDay() if interval.getValue() <= 0.0: interval.setValue(1.0/5000.0) if not self._timerqueuetimer.isActive(): # FIXME jkg: frodo changed this to time.getMsecValue() in C++ Quarter. test and apply. self._timerqueuetimer.start(interval.getMsecValue()) else: self._timerqueuetimer.setInterval(interval.getMsecValue()) elif self._timerqueuetimer.isActive(): self._timerqueuetimer.stop() if sensormanager.isDelaySensorPending(): self._idletimer.start(0) if not self._delaytimer.isActive(): time = SoDB.getDelaySensorTimeout() if time != SbTime.zero(): self._delaytimer.start(interval.getMsecValue()) else: if self._idletimer.isActive(): self._idletimer.stop() if self._delaytimer.isActive(): self._delaytimer.stop() def idleTimeout(self): SoDB.getSensorManager().processTimerQueue() SoDB.getSensorManager().processDelayQueue(True) self.sensorQueueChanged() def timerQueueTimeout(self): SoDB.getSensorManager().processTimerQueue() self.sensorQueueChanged() def delayTimeout(self): SoDB.getSensorManager().processTimerQueue() SoDB.getSensorManager().processDelayQueue(False) self.sensorQueueChanged()