is_alive; better error reporting

This commit is contained in:
Tony Garnock-Jones 2019-06-24 00:03:07 +01:00
parent 3b34b86bf1
commit eccff41397
2 changed files with 10 additions and 2 deletions

View File

@ -5,7 +5,7 @@ except ImportError:
setup(
name="mini-syndicate",
version="0.0.5",
version="0.0.6",
author="Tony Garnock-Jones",
author_email="tonyg@leastfixedpoint.com",
license="GNU General Public License v3 or later (GPLv3+)",

View File

@ -108,6 +108,9 @@ class Actor(object):
self._log = logging.getLogger('syndicate.mini.Actor.%s' % (self.name,))
return self._log
def is_alive(self):
return self.alive
def react(self, turn):
return FacetSetupContext(turn, Facet(self.conn, self, self))
@ -169,9 +172,12 @@ class Facet(object):
def log(self):
return self.actor.log
def is_alive(self):
return self.state == 1
def _ensure_state(self, wanted_state, message):
if self.state != wanted_state:
raise Exception(message)
raise Exception(message, self.state)
def _add_child(self, facet):
self._ensure_state(1, 'Cannot add child facet in this state')
@ -201,6 +207,8 @@ class Facet(object):
for e in self.endpoints: e._start(turn)
for t in self.start_callbacks: t(turn)
self.start_callbacks.clear()
if not self.parent.is_alive() or self.is_inert():
self.stop(turn)
def is_inert(self):
return len(self.children) == 0 and len(self.endpoints) == 0