Documentation ¶
Index ¶
- Constants
- Variables
- func HasConsistentTransport(a ma.Multiaddr, green []ma.Multiaddr) bool
- type IDService
- type ObservedAddr
- type ObservedAddrSet
- func (oas *ObservedAddrSet) Add(observed, local, observer ma.Multiaddr, direction network.Direction)
- func (oas *ObservedAddrSet) Addrs() (addrs []ma.Multiaddr)
- func (oas *ObservedAddrSet) AddrsFor(addr ma.Multiaddr) (addrs []ma.Multiaddr)
- func (oas *ObservedAddrSet) SetTTL(ttl time.Duration)
- func (oas *ObservedAddrSet) TTL() time.Duration
Constants ¶
const ActivationThresh = 4
const ID = "/ipfs/id/1.0.0"
ID is the protocol.ID of the Identify Service.
const IDDelta = "/p2p/id/delta/1.0.0"
const IDPush = "/ipfs/id/push/1.0.0"
IDPush is the protocol.ID of the Identify push protocol. It sends full identify messages containing the current state of the peer.
It is in the process of being replaced by identify delta, which sends only diffs for better resource utilisation.
const LibP2PVersion = "ipfs/0.1.0"
LibP2PVersion holds the current protocol version for a client running this code TODO(jbenet): fix the versioning mess.
Variables ¶
var ClientVersion = "go-libp2p/3.3.4"
var GCInterval = 10 * time.Minute
Functions ¶
func HasConsistentTransport ¶
HasConsistentTransport returns true if the address 'a' shares a protocol set with any address in the green set. This is used to check if a given address might be one of the addresses a peer is listening on.
Types ¶
type IDService ¶
IDService is a structure that implements ProtocolIdentify. It is a trivial service that gives the other peer some useful information about the local peer. A sort of hello.
The IDService sends:
- Our IPFS Protocol Version
- Our IPFS Agent Version
- Our public Listen Addresses
func NewIDService ¶
NewIDService constructs a new *IDService and activates it by attaching its stream handler to the given host.Host.
func (*IDService) IdentifyConn ¶
func (*IDService) IdentifyWait ¶
IdentifyWait returns a channel which will be closed once "ProtocolIdentify" (handshake3) finishes on given conn. This happens async so the connection can start to be used even if handshake3 knowledge is not necesary. Users **MUST** call IdentifyWait _after_ IdentifyConn
func (*IDService) ObservedAddrsFor ¶ added in v0.0.2
func (*IDService) OwnObservedAddrs ¶
OwnObservedAddrs returns the addresses peers have reported we've dialed from
type ObservedAddr ¶
type ObservedAddr struct { Addr ma.Multiaddr SeenBy map[string]observation // peer(observer) address -> observation info LastSeen time.Time }
ObservedAddr is an entry for an address reported by our peers. We only use addresses that:
- have been observed at least 4 times in last 1h. (counter symmetric nats)
- have been observed at least once recently (1h), because our position in the network, or network port mapppings, may have changed.
type ObservedAddrSet ¶
type ObservedAddrSet struct { sync.RWMutex // guards whole datastruct. // contains filtered or unexported fields }
ObservedAddrSet keeps track of a set of ObservedAddrs the zero-value is ready to be used.
func NewObservedAddrSet ¶ added in v0.0.7
func NewObservedAddrSet(ctx context.Context) *ObservedAddrSet
func (*ObservedAddrSet) Add ¶
func (oas *ObservedAddrSet) Add(observed, local, observer ma.Multiaddr, direction network.Direction)
func (*ObservedAddrSet) Addrs ¶
func (oas *ObservedAddrSet) Addrs() (addrs []ma.Multiaddr)
Addrs return all activated observed addresses
func (*ObservedAddrSet) AddrsFor ¶ added in v0.0.2
func (oas *ObservedAddrSet) AddrsFor(addr ma.Multiaddr) (addrs []ma.Multiaddr)
AddrsFor return all activated observed addresses associated with the given (resolved) listen address.
func (*ObservedAddrSet) SetTTL ¶
func (oas *ObservedAddrSet) SetTTL(ttl time.Duration)
func (*ObservedAddrSet) TTL ¶
func (oas *ObservedAddrSet) TTL() time.Duration