node.Node.__init__(self, basedir)
self.queen = None # self.queen is either None or a RemoteReference
self.all_peers = set()
+ self.peer_pburls = {}
self.connections = {}
self.add_service(StorageServer(os.path.join(basedir, self.STOREDIR)))
self.add_service(Uploader())
self.log("weird, I already had an entry for them")
return
self.all_peers.add(nodeid)
+ self.peer_pburls[nodeid] = pburl
if nodeid not in self.connections:
d = self.tub.getReference(pburl)
def _got_reference(ref, which_nodeid):
self.all_peers.remove(nodeid)
else:
self.log("weird, I didn't have an entry for them")
+ if nodeid in self.peer_pburls:
+ del self.peer_pburls[nodeid]
if nodeid in self.connections:
del self.connections[nodeid]
<tr n:pattern="header">
<td>PeerID</td>
<td>Connected?</td>
+ <td>PBURL</td>
</tr>
<tr n:pattern="item" n:render="row">
<td><tt><n:slot name="peerid"/></tt></td>
<td><n:slot name="connected"/></td>
+ <td><n:slot name="pburl"/></td>
</tr>
<tr n:pattern="empty"><td>no peers!</td></tr>
</table>
return len(client.all_peers)
def data_num_connected_peers(self, ctx, data):
return len(IClient(ctx).connections)
+
def data_peers(self, ctx, data):
- return sorted(IClient(ctx).all_peers)
+ d = []
+ client = IClient(ctx)
+ for nodeid in sorted(client.all_peers):
+ if nodeid in client.connections:
+ connected = "yes"
+ else:
+ connected = "no"
+ pburl = client.peer_pburls[nodeid]
+ row = (idlib.b2a(nodeid), connected, pburl)
+ d.append(row)
+ return d
+
def render_row(self, ctx, data):
- if data in IClient(ctx).connections:
- connected = "yes"
- else:
- connected = "no"
- ctx.fillSlots("peerid", idlib.b2a(data))
+ nodeid_a, connected, pburl = data
+ ctx.fillSlots("peerid", nodeid_a)
ctx.fillSlots("connected", connected)
+ ctx.fillSlots("pburl", pburl)
return ctx.tag
# this is a form where users can download files by URI