Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
1import gevent
2from Debug import Debug
3
4
5class GreenletManager:
6 def __init__(self):
7 self.greenlets = set()
8
9 def spawnLater(self, *args, **kwargs):
10 greenlet = gevent.spawn_later(*args, **kwargs)
11 greenlet.link(lambda greenlet: self.greenlets.remove(greenlet))
12 self.greenlets.add(greenlet)
13 return greenlet
14
15 def spawn(self, *args, **kwargs):
16 greenlet = gevent.spawn(*args, **kwargs)
17 greenlet.link(lambda greenlet: self.greenlets.remove(greenlet))
18 self.greenlets.add(greenlet)
19 return greenlet
20
21 def stopGreenlets(self, reason="Stopping all greenlets"):
22 num = len(self.greenlets)
23 gevent.killall(list(self.greenlets), Debug.createNotifyType(reason), block=False)
24 return num