diff --git a/net/interface.go b/net/interface.go index 18713d342..f474664c6 100644 --- a/net/interface.go +++ b/net/interface.go @@ -20,6 +20,9 @@ type Network interface { // Listen(*ma.Muliaddr) error // TODO: for now, only listen on addrs in local peer when initializing. + // LocalPeer returns the local peer associated with this network + LocalPeer() peer.Peer + // DialPeer attempts to establish a connection to a given peer DialPeer(context.Context, peer.Peer) error @@ -71,6 +74,8 @@ type Service srv.Service // (this is usually just a Network, but other services may not need the whole // stack, and thus it becomes easier to mock) type Dialer interface { + // LocalPeer returns the local peer associated with this network + LocalPeer() peer.Peer // DialPeer attempts to establish a connection to a given peer DialPeer(context.Context, peer.Peer) error diff --git a/net/net.go b/net/net.go index 972ebf9c2..46d22fe67 100644 --- a/net/net.go +++ b/net/net.go @@ -69,6 +69,11 @@ func (n *IpfsNetwork) DialPeer(ctx context.Context, p peer.Peer) error { return err } +// LocalPeer the network's LocalPeer +func (n *IpfsNetwork) LocalPeer() peer.Peer { + return n.swarm.LocalPeer() +} + // ClosePeer connection to peer func (n *IpfsNetwork) ClosePeer(p peer.Peer) error { return n.swarm.CloseConnection(p) diff --git a/net/swarm/swarm.go b/net/swarm/swarm.go index c7291a048..4f4a8d282 100644 --- a/net/swarm/swarm.go +++ b/net/swarm/swarm.go @@ -217,3 +217,8 @@ func (s *Swarm) GetPeerList() []peer.Peer { s.connsLock.RUnlock() return out } + +// LocalPeer returns the local peer swarm is associated to. +func (s *Swarm) LocalPeer() peer.Peer { + return s.local +}