aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki
diff options
context:
space:
mode:
Diffstat (limited to 'rpkid/rpki')
-rw-r--r--rpkid/rpki/async.py6
-rw-r--r--rpkid/rpki/rpki_engine.py40
2 files changed, 24 insertions, 22 deletions
diff --git a/rpkid/rpki/async.py b/rpkid/rpki/async.py
index 4dc56d41..251dc253 100644
--- a/rpkid/rpki/async.py
+++ b/rpkid/rpki/async.py
@@ -25,10 +25,14 @@ class iterator(object):
self.handler_cb = handler_cb
self.done_cb = done_cb
self.iterator = iter(iterable)
+ self.next()
def __call__(self, *ignored):
+ self.next()
+
+ def next(self):
try:
- self.handler_cb(self.iterator.next())
+ self.handler_cb(self, self.iterator.next())
except StopIteration:
if self.done_cb is not None:
self.done_cb()
diff --git a/rpkid/rpki/rpki_engine.py b/rpkid/rpki/rpki_engine.py
index 1a9a5026..5f89c338 100644
--- a/rpkid/rpki/rpki_engine.py
+++ b/rpkid/rpki/rpki_engine.py
@@ -115,33 +115,31 @@ class rpkid_context(object):
rpki.log.trace()
self.sql.ping()
- def cronjob_done():
- self.sql.sweep()
- cb(200, "OK")
+ def cronjob_do_one(iterator, s):
- self.cronjob_iterator = rpki.async.iterator(rpki.left_right.self_elt.sql_fetch_all(self),
- self.cronjob_do_one, cronjob_done)
- self.cronjob_iterator()
+ def client_poll():
+ rpki.log.debug("Self %s polling parents" % s.self_id)
+ s.client_poll(update_children)
- def cronjob_do_one(self, s):
- """Handle periodic tasks for one <self_elt/>."""
+ def update_children():
+ rpki.log.debug("Self %s updating children" % s.self_id)
+ s.update_children(update_roas_crls_and_manifests)
- def client_poll():
- rpki.log.debug("Self %s polling parents" % s.self_id)
- s.client_poll(update_children)
+ def update_roas_crls_and_manifests():
+ rpki.log.debug("Self %s updating ROAs" % s.self_id)
+ s.update_roas()
+ rpki.log.debug("Self %s regenerating CRLs and manifests" % s.self_id)
+ s.regenerate_crls_and_manifests()
+ iterator()
- def update_children():
- rpki.log.debug("Self %s updating children" % s.self_id)
- s.update_children(update_roas_crls_and_manifests)
+ client_poll()
- def update_roas_crls_and_manifests():
- rpki.log.debug("Self %s updating ROAs" % s.self_id)
- s.update_roas()
- rpki.log.debug("Self %s regenerating CRLs and manifests" % s.self_id)
- s.regenerate_crls_and_manifests()
- self.cronjob_iterator()
+ def cronjob_done():
+ self.sql.sweep()
+ cb(200, "OK")
- client_poll()
+ rpki.async.iterator(rpki.left_right.self_elt.sql_fetch_all(self),
+ cronjob_do_one, cronjob_done)
## @var https_ta_cache
# HTTPS trust anchor cache, to avoid regenerating it for every TLS connection.