Documentation ¶
Index ¶
- Constants
- Variables
- func HasConsistentTransport(a ma.Multiaddr, green []ma.Multiaddr) bool
- type IDService
- type ObservedAddr
- type ObservedAddrManager
- func (oas *ObservedAddrManager) Addrs() []ma.Multiaddr
- func (oas *ObservedAddrManager) AddrsFor(addr ma.Multiaddr) (addrs []ma.Multiaddr)
- func (oas *ObservedAddrManager) Record(conn network.Conn, observed ma.Multiaddr)
- func (oas *ObservedAddrManager) SetTTL(ttl time.Duration)
- func (oas *ObservedAddrManager) TTL() time.Duration
- type Option
Constants ¶
const ID = "/ipfs/id/1.0.0"
ID is the protocol.ID of version 1.0.0 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. XXX: Don't change this till 2020. You'll break all go-ipfs versions prior to 0.4.17 which asserted an exact version match.
Variables ¶
var ActivationThresh = 4
ActivationThresh sets how many times an address must be seen as "activated" and therefore advertised to other peers as an address that the local peer can be contacted on. The "seen" events expire by default after 40 minutes (OwnObservedAddressTTL * ActivationThreshold). The are cleaned up during the GC rounds set by GCInterval.
var ClientVersion = "github.com/libp2p/go-libp2p"
ClientVersion is the default user agent.
Deprecated: Set this with the UserAgent option.
var GCInterval = 10 * time.Minute
GCInterval specicies how often to make a round cleaning seen events and observed addresses. An address will be cleaned if it has not been seen in OwnObservedAddressTTL (10 minutes). A "seen" event will be cleaned up if it is older than OwnObservedAddressTTL * ActivationThresh (40 minutes).
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 ¶
IdentifyConn synchronously triggers an identify request on the connection and waits for it to complete. If the connection is being identified by another caller, this call will wait. If the connection has already been identified, it will return immediately.
func (*IDService) IdentifyWait ¶
IdentifyWait triggers an identify (if the connection has not already been identified) and returns a channel that is closed when the identify protocol completes.
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 40 minutes. (counter symmetric nats)
- have been observed at least once recently (10 minutes), because our position in the network, or network port mapppings, may have changed.
func (*ObservedAddr) GroupKey ¶ added in v0.9.2
func (oa *ObservedAddr) GroupKey() string
GroupKey returns the group in which this observation belongs. Currently, an observed address's group is just the address with all ports set to 0. This means we can advertise the most commonly observed external ports without advertising _every_ observed port.
type ObservedAddrManager ¶ added in v0.8.2
type ObservedAddrManager struct {
// contains filtered or unexported fields
}
ObservedAddrManager keeps track of a ObservedAddrs.
func NewObservedAddrManager ¶ added in v0.8.2
func NewObservedAddrManager(ctx context.Context, host host.Host) *ObservedAddrManager
NewObservedAddrManager returns a new address manager using peerstore.OwnObservedAddressTTL as the TTL.
func (*ObservedAddrManager) Addrs ¶ added in v0.8.2
func (oas *ObservedAddrManager) Addrs() []ma.Multiaddr
Addrs return all activated observed addresses
func (*ObservedAddrManager) AddrsFor ¶ added in v0.8.2
func (oas *ObservedAddrManager) AddrsFor(addr ma.Multiaddr) (addrs []ma.Multiaddr)
AddrsFor return all activated observed addresses associated with the given (resolved) listen address.
func (*ObservedAddrManager) Record ¶ added in v0.8.2
func (oas *ObservedAddrManager) Record(conn network.Conn, observed ma.Multiaddr)
Record records an address observation, if valid.
func (*ObservedAddrManager) SetTTL ¶ added in v0.8.2
func (oas *ObservedAddrManager) SetTTL(ttl time.Duration)
SetTTL sets the TTL of an observed address manager.
func (*ObservedAddrManager) TTL ¶ added in v0.8.2
func (oas *ObservedAddrManager) TTL() time.Duration
TTL gets the TTL of an observed address manager.
type Option ¶ added in v0.4.0
type Option func(*config)
Option is an option function for identify.
func DisableSignedPeerRecord ¶ added in v0.9.0
func DisableSignedPeerRecord() Option
DisableSignedPeerRecord disables populating signed peer records on the outgoing Identify response and ONLY sends the unsigned addresses.