From 158fc107c0df1e840734fbe12d77b1f639c1bf04 Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@lothar.com>
Date: Thu, 30 Nov 2006 17:43:15 -0700
Subject: [PATCH] start developing Roster, track all active peers

---
 allmydata/client.py |  4 ++--
 allmydata/queen.py  | 15 +++++++++++++--
 2 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/allmydata/client.py b/allmydata/client.py
index bca3ad03..c60042a1 100644
--- a/allmydata/client.py
+++ b/allmydata/client.py
@@ -12,7 +12,7 @@ reactor.installResolver(BlockingResolver())
 class Storage(service.MultiService, Referenceable):
     pass
 
-class Client(service.MultiService):
+class Client(service.MultiService, Referenceable):
     CERTFILE = "client.pem"
     AUTHKEYSFILE = "authorized_keys"
 
@@ -63,7 +63,7 @@ class Client(service.MultiService):
         log.msg("connected to queen")
         self.queen = queen
         queen.notifyOnDisconnect(self._lost_queen)
-        queen.callRemote("hello", urls=self.urls)
+        queen.callRemote("hello", nodeid=self.tub.tubID, self=self, urls=self.urls)
 
     def _lost_queen(self):
         log.msg("lost connection to queen")
diff --git a/allmydata/queen.py b/allmydata/queen.py
index a06f90b4..1c7158a0 100644
--- a/allmydata/queen.py
+++ b/allmydata/queen.py
@@ -6,8 +6,19 @@ import os.path
 from allmydata.util.iputil import get_local_ip_for
 
 class Roster(service.MultiService, Referenceable):
-    def remote_hello(self, urls):
-        print "contact from %s" % urls
+    def __init__(self):
+        service.MultiService.__init__(self)
+        self.active_peers = {}
+
+    def remote_hello(self, nodeid, node, urls):
+        log.msg("contact from %s" % nodeid)
+        self.active_peers[nodeid] = urls
+        node.notifyOnDisconnect(self._lost_node, nodeid)
+
+    def _lost_node(self, nodeid):
+        log.msg("lost contact with %s" % nodeid)
+        del self.active_peers[nodeid]
+
 
 class Queen(service.MultiService):
     CERTFILE = "queen.pem"
-- 
2.45.2