From a97596ab9ae9fae0f50c985b2c7f5bf2a9e5fab8 Mon Sep 17 00:00:00 2001
From: Brian Warner <warner@lothar.com>
Date: Thu, 30 Nov 2006 15:27:06 -0700
Subject: [PATCH] have client running, no queen to connect to yet

---
 allmydata/__init__.py |  0
 allmydata/client.py   | 33 ++++++++++++++++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)
 create mode 100644 allmydata/__init__.py

diff --git a/allmydata/__init__.py b/allmydata/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/allmydata/client.py b/allmydata/client.py
index cadbd289..ed49e96c 100644
--- a/allmydata/client.py
+++ b/allmydata/client.py
@@ -1,9 +1,40 @@
 
 from foolscap import Tub
 from twisted.application import service
+from twisted.python import log
+import os.path
 
 class Client(service.MultiService):
+    CERTFILE = "client.pem"
+
     def __init__(self, queen_pburl):
         service.MultiService.__init__(self)
         self.queen_pburl = queen_pburl
-        self.tub = Tub()
+        if os.path.exists(self.CERTFILE):
+            self.tub = Tub(certData=open(self.CERTFILE, "rb").read())
+        else:
+            self.tub = Tub()
+            f = open(self.CERTFILE, "wb")
+            f.write(self.tub.getCertData())
+            f.close()
+        self.queen = None # self.queen is either None or a RemoteReference
+
+    def startService(self):
+        service.MultiService.startService(self)
+        if self.queen_pburl:
+            self.connector = self.tub.connectTo(self.queen_pburl,
+                                                self._got_queen)
+        else:
+            log.msg("no queen_pburl, cannot connect")
+
+    def stopService(self):
+        self.connector.stopConnecting()
+
+    def _got_queen(self, queen):
+        log.msg("connected to queen")
+        self.queen = queen
+        queen.notifyOnDisconnect(self._lost_queen)
+
+    def _lost_queen(self):
+        log.msg("lost connection to queen")
+        self.queen = None
-- 
2.45.2