use mdns for local peer discovery

This commit is contained in:
j 2016-03-14 14:31:56 +01:00
commit 417195cfd1
7 changed files with 132 additions and 259 deletions

View file

@ -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():