Skip to content

Commit 3730712

Browse files
Put together demo API endpoint for known peers
1 parent 9b4493b commit 3730712

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

api.go

+4
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,10 @@ func (*Api) GetAll(ctx *jas.Context) {
523523
}
524524
}
525525

526+
func (*Api) GetAllPeers(ctx *jas.Context) {
527+
ctx.Data = KnownPeers
528+
}
529+
526530
// PostMessage emails the given message to the email address owned by
527531
// the node with the given IP. It requires a correct and non-expired
528532
// CAPTCHA pair be given.

edges.go

+20-9
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@ var NetworkAdminNotConnectedError = errors.New("Network admin interface not conn
1111
var NetworkAdminCredentialsMissingError = errors.New("Network admin credentials missing")
1212
var NetworkAdminCredentialsInvalidError = errors.New("Network admin credentials invalid")
1313

14+
var KnownPeers []*Peers
15+
16+
type Peers struct {
17+
Source IP
18+
Destinations []IP
19+
}
20+
1421
type Network interface {
1522
// Connect initializes the object and connects to whatever
1623
// administration interfaces necessary.
@@ -21,13 +28,13 @@ type Network interface {
2128
Close() error
2229

2330
// PeersOf retrieves all IP addresses known to be connected to the
24-
// given IP. It can return a nil slice.
25-
PeersOf(IP) ([]IP, error)
31+
// given IP. It can return nil.
32+
PeersOf(IP) (*Peers, error)
2633

2734
// PeersOfAll functions similarly to PeersOf, but gives connected
2835
// IPs for all given IPs, in the order they are given. Slices can
2936
// be nil.
30-
PeersOfAll([]IP) ([][]IP, error)
37+
PeersOfAll([]IP) ([]*Peers, error)
3138
}
3239

3340
// PopulateRoutes finds the peers of every known node in the
@@ -70,7 +77,8 @@ func PopulatePeers(db DB) {
7077
l.Errf("Error listing peers: %s", err)
7178
return
7279
}
73-
l.Debugf("IPs: %v\nPeers: %v\n", ips, peers)
80+
l.Infof("Peering data refreshed")
81+
KnownPeers = peers
7482
}
7583

7684
type CJDNSNetwork struct {
@@ -116,7 +124,7 @@ func (n *CJDNSNetwork) Close() error {
116124
return n.conn.Conn.Close()
117125
}
118126

119-
func (n *CJDNSNetwork) PeersOf(ip IP) (peers []IP, err error) {
127+
func (n *CJDNSNetwork) PeersOf(ip IP) (peers *Peers, err error) {
120128
// First, ensure that the Network is connected. If not, return the
121129
// appropriate error.
122130
if !n.connected {
@@ -137,16 +145,19 @@ func (n *CJDNSNetwork) PeersOf(ip IP) (peers []IP, err error) {
137145
return
138146
}
139147

140-
peers = make([]IP, len(peerRoutes))
148+
peers = &Peers{
149+
Source: ip,
150+
Destinations: make([]IP, len(peerRoutes)),
151+
}
141152

142153
for i, route := range peerRoutes {
143-
peers[i] = IP(*route.IP)
154+
peers.Destinations[i] = IP(*route.IP)
144155
}
145156
return
146157
}
147158

148-
func (n *CJDNSNetwork) PeersOfAll(ips []IP) (peers [][]IP, err error) {
149-
peers = make([][]IP, len(ips))
159+
func (n *CJDNSNetwork) PeersOfAll(ips []IP) (peers []*Peers, err error) {
160+
peers = make([]*Peers, len(ips))
150161
for i, ip := range ips {
151162
peers[i], err = n.PeersOf(ip)
152163
if err != nil {

0 commit comments

Comments
 (0)