use mdns for local peer discovery
This commit is contained in:
parent
bea7c57515
commit
417195cfd1
7 changed files with 132 additions and 259 deletions
22
oml/nodes.py
22
oml/nodes.py
|
|
@ -105,8 +105,8 @@ class Node(Thread):
|
|||
self.port = 9851
|
||||
|
||||
def get_local(self):
|
||||
if self._nodes and self._nodes._local:
|
||||
return self._nodes._local.get(self.user_id)
|
||||
if self._nodes and self._nodes.local:
|
||||
return self._nodes.local.get(self.user_id)
|
||||
return None
|
||||
|
||||
def request(self, action, *args):
|
||||
|
|
@ -405,7 +405,7 @@ class Node(Thread):
|
|||
|
||||
class Nodes(Thread):
|
||||
_nodes = {}
|
||||
_local = None
|
||||
local = None
|
||||
_pulling = False
|
||||
|
||||
def __init__(self):
|
||||
|
|
@ -420,9 +420,7 @@ class Nodes(Thread):
|
|||
for u in user.models.User.query.filter_by(queued=True):
|
||||
logger.debug('adding queued node... %s', u.id)
|
||||
self.queue('add', u.id, True)
|
||||
self._local = LocalNodes()
|
||||
self._cleanup = PeriodicCallback(lambda: self.queue('cleanup'), 120000)
|
||||
self._cleanup.start()
|
||||
self.local = LocalNodes()
|
||||
self._pullcb = PeriodicCallback(self.pull, settings.server['pull_interval'])
|
||||
self._pullcb.start()
|
||||
Thread.__init__(self)
|
||||
|
|
@ -435,19 +433,13 @@ class Nodes(Thread):
|
|||
while not state.shutdown:
|
||||
args = self._q.get()
|
||||
if args:
|
||||
if args[0] == 'cleanup':
|
||||
self.cleanup()
|
||||
elif args[0] == 'add':
|
||||
if args[0] == 'add':
|
||||
self._add(*args[1:])
|
||||
elif args[0] == 'pull':
|
||||
self._pull()
|
||||
else:
|
||||
self._call(*args)
|
||||
|
||||
def cleanup(self):
|
||||
if not state.shutdown and self._local:
|
||||
self._local.cleanup()
|
||||
|
||||
def queue(self, *args):
|
||||
self._q.put(list(args))
|
||||
|
||||
|
|
@ -515,8 +507,8 @@ class Nodes(Thread):
|
|||
self._q.put(None)
|
||||
for node in list(self._nodes.values()):
|
||||
node.join()
|
||||
if self._local:
|
||||
self._local.join()
|
||||
if self.local:
|
||||
self.local.close()
|
||||
return Thread.join(self)
|
||||
|
||||
def publish_node():
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue