def __init__(self, engine=None, history=None): assert(engine==None or IEngineCore.providedBy(engine)) self.engine = IEngineCore(engine) if history is None: self.history = FrontEndHistory(input_cache=['']) else: self.history = history
def __init__(self, engine=None, history=None): assert (engine == None or IEngineCore.providedBy(engine)) self.engine = IEngineCore(engine) if history is None: self.history = FrontEndHistory(input_cache=['']) else: self.history = history
def register_engine(self, remoteEngine, id=None, ip=None, port=None, pid=None): """Register new engine connection""" # What happens if these assertions fail? assert IEngineCore.providedBy(remoteEngine), \ "engine passed to register_engine doesn't provide IEngineCore" assert IEngineSerialized.providedBy(remoteEngine), \ "engine passed to register_engine doesn't provide IEngineSerialized" assert IEngineQueued.providedBy(remoteEngine), \ "engine passed to register_engine doesn't provide IEngineQueued" assert isinstance(id, int) or id is None, \ "id to register_engine must be an integer or None" assert isinstance(ip, str) or ip is None, \ "ip to register_engine must be a string or None" assert isinstance(port, int) or port is None, \ "port to register_engine must be an integer or None" assert isinstance(pid, int) or pid is None, \ "pid to register_engine must be an integer or None" desiredID = id if desiredID in self.engines.keys(): desiredID = None if desiredID in self.availableIDs: getID = desiredID self.availableIDs.remove(desiredID) else: getID = self.availableIDs.pop() remoteEngine.id = getID remoteEngine.service = self self.engines[getID] = remoteEngine # Log the Engine Information for monitoring purposes self._logEngineInfoToFile(getID, ip, port, pid) msg = "registered engine with id: %i" % getID log.msg(msg) for i in range(len(self._onRegister)): (f, args, kwargs, ifid) = self._onRegister[i] try: if ifid: f(getID, *args, **kwargs) else: f(*args, **kwargs) except: self._onRegister.pop(i) # Call functions when the nth engine is registered and them remove them for i, (n, f, args, kwargs) in enumerate(self._onNRegistered): if len(self.engines.keys()) == n: try: try: f(*args, **kwargs) except: log.msg( "Function %r failed when the %ith engine registered" % (f, n)) finally: self._onNRegistered.pop(i) return {'id': getID}
def register_engine(self, remoteEngine, id=None, ip=None, port=None, pid=None): """Register new engine connection""" # What happens if these assertions fail? assert IEngineCore.providedBy(remoteEngine), \ "engine passed to register_engine doesn't provide IEngineCore" assert IEngineSerialized.providedBy(remoteEngine), \ "engine passed to register_engine doesn't provide IEngineSerialized" assert IEngineQueued.providedBy(remoteEngine), \ "engine passed to register_engine doesn't provide IEngineQueued" assert isinstance(id, int) or id is None, \ "id to register_engine must be an integer or None" assert isinstance(ip, str) or ip is None, \ "ip to register_engine must be a string or None" assert isinstance(port, int) or port is None, \ "port to register_engine must be an integer or None" assert isinstance(pid, int) or pid is None, \ "pid to register_engine must be an integer or None" desiredID = id if desiredID in self.engines.keys(): desiredID = None if desiredID in self.availableIDs: getID = desiredID self.availableIDs.remove(desiredID) else: getID = self.availableIDs.pop() remoteEngine.id = getID remoteEngine.service = self self.engines[getID] = remoteEngine # Log the Engine Information for monitoring purposes self._logEngineInfoToFile(getID, ip, port, pid) msg = "registered engine with id: %i" %getID log.msg(msg) for i in range(len(self._onRegister)): (f,args,kwargs,ifid) = self._onRegister[i] try: if ifid: f(getID, *args, **kwargs) else: f(*args, **kwargs) except: self._onRegister.pop(i) # Call functions when the nth engine is registered and them remove them for i, (n, f, args, kwargs) in enumerate(self._onNRegistered): if len(self.engines.keys()) == n: try: try: f(*args, **kwargs) except: log.msg("Function %r failed when the %ith engine registered" % (f, n)) finally: self._onNRegistered.pop(i) return {'id':getID}