repeatable way, to distribute load over many peers.
"""
-class IServer(Interface):
+class IDisplayableServer(Interface):
+ def get_nickname():
+ pass
+ def get_name():
+ pass
+ def get_longname():
+ pass
+
+class IServer(IDisplayableServer):
"""I live in the client, and represent a single server."""
def start_connecting(tub, trigger_cb):
pass
- def get_nickname():
- pass
def get_rref():
pass
import re, time
from zope.interface import implements
from foolscap.api import eventually
-from allmydata.interfaces import IStorageBroker, IServer
+from allmydata.interfaces import IStorageBroker, IDisplayableServer, IServer
from allmydata.util import log, base32
from allmydata.util.assertutil import precondition
from allmydata.util.rrefutil import add_version_to_remote_reference
return self.servers[serverid].get_nickname()
return None
+ def get_stub_server(self, serverid):
+ if serverid in self.servers:
+ return self.servers[serverid]
+ return StubServer(serverid)
+
+class StubServer:
+ implements(IDisplayableServer)
+ def __init__(self, serverid):
+ self.serverid = serverid # binary tubid
+ def get_serverid(self):
+ return self.serverid
+ def get_name(self):
+ return base32.b2a(self.serverid)[:8]
+ def get_longname(self):
+ return base32.b2a(self.serverid)
+ def get_nickname(self):
+ return "?"
+
class NativeStorageServer:
"""I hold information about a storage server that we want to connect to.
If we are connected, I hold the RemoteReference, their host address, and