Documentation ¶
Overview ¶
Package topology exposes abstractions needed in topology-aware components.
Index ¶
Constants ¶
This section is empty.
Variables ¶
Functions ¶
This section is empty.
Types ¶
type ClosestPeerer ¶
type ClosestPeerer interface { // ClosestPeer returns the closest connected peer we have in relation to a // given chunk address. // This function will ignore peers with addresses provided in skipPeers. // Returns topology.ErrWantSelf in case base is the closest to the address. ClosestPeer(addr swarm.Address, includeSelf bool, f Select, skipPeers ...swarm.Address) (peerAddr swarm.Address, err error) }
type Driver ¶
type Driver interface { p2p.Notifier PeerAdder ClosestPeerer PeerIterator NeighborhoodDepther SubscribeTopologyChange() (c <-chan struct{}, unsubscribe func()) io.Closer Halter Snapshot() *KadParams IsReachable() bool SetStorageRadiuser UpdatePeerHealth(addr swarm.Address, h bool, t time.Duration) }
type EachPeerFunc ¶
EachPeerFunc is a callback that is called with a peer and its PO
type Halter ¶ added in v0.6.2
type Halter interface { // Halt the topology from initiating new connections // while allowing it to still run. Halt() }
type KadBins ¶ added in v0.6.0
type KadBins struct { Bin0 BinInfo `json:"bin_0"` Bin1 BinInfo `json:"bin_1"` Bin2 BinInfo `json:"bin_2"` Bin3 BinInfo `json:"bin_3"` Bin4 BinInfo `json:"bin_4"` Bin5 BinInfo `json:"bin_5"` Bin6 BinInfo `json:"bin_6"` Bin7 BinInfo `json:"bin_7"` Bin8 BinInfo `json:"bin_8"` Bin9 BinInfo `json:"bin_9"` Bin10 BinInfo `json:"bin_10"` Bin11 BinInfo `json:"bin_11"` Bin12 BinInfo `json:"bin_12"` Bin13 BinInfo `json:"bin_13"` Bin14 BinInfo `json:"bin_14"` Bin15 BinInfo `json:"bin_15"` Bin16 BinInfo `json:"bin_16"` Bin17 BinInfo `json:"bin_17"` Bin18 BinInfo `json:"bin_18"` Bin19 BinInfo `json:"bin_19"` Bin20 BinInfo `json:"bin_20"` Bin21 BinInfo `json:"bin_21"` Bin22 BinInfo `json:"bin_22"` Bin23 BinInfo `json:"bin_23"` Bin24 BinInfo `json:"bin_24"` Bin25 BinInfo `json:"bin_25"` Bin26 BinInfo `json:"bin_26"` Bin27 BinInfo `json:"bin_27"` Bin28 BinInfo `json:"bin_28"` Bin29 BinInfo `json:"bin_29"` Bin30 BinInfo `json:"bin_30"` Bin31 BinInfo `json:"bin_31"` }
type KadParams ¶ added in v0.6.0
type KadParams struct { Base string `json:"baseAddr"` // base address string Population int `json:"population"` // known Connected int `json:"connected"` // connected count Timestamp time.Time `json:"timestamp"` // now NNLowWatermark int `json:"nnLowWatermark"` // low watermark for depth calculation Depth uint8 `json:"depth"` // current depth Reachability string `json:"reachability"` // current reachability status NetworkAvailability string `json:"networkAvailability"` // network availability Bins KadBins `json:"bins"` // individual bin info LightNodes BinInfo `json:"lightNodes"` // light nodes bin info }
type MetricSnapshotView ¶ added in v0.6.0
type MetricSnapshotView struct { LastSeenTimestamp int64 `json:"lastSeenTimestamp"` SessionConnectionRetry uint64 `json:"sessionConnectionRetry"` ConnectionTotalDuration float64 `json:"connectionTotalDuration"` SessionConnectionDuration float64 `json:"sessionConnectionDuration"` SessionConnectionDirection string `json:"sessionConnectionDirection"` LatencyEWMA int64 `json:"latencyEWMA"` Reachability string `json:"reachability"` Healthy bool `json:"healthy"` }
MetricSnapshotView represents snapshot of metrics counters in more human readable form.
type NeighborhoodDepther ¶ added in v1.0.0
type NeighborhoodDepther interface {
NeighborhoodDepth() uint8
}
type PeerInfo ¶ added in v0.6.0
type PeerInfo struct { Address swarm.Address `json:"address"` Metrics *MetricSnapshotView `json:"metrics,omitempty"` }
PeerInfo is a view of peer information exposed to a user.
type PeerIterator ¶ added in v1.14.0
type PeerIterator interface { // EachConnectedPeer iterates through connected // peers from the closest bin to the farthest. EachConnectedPeer(EachPeerFunc, Select) error // EachConnectedPeerRev iterates through connected // peers from the farthest bin to the closest. EachConnectedPeerRev(EachPeerFunc, Select) error }
PeerIterator is an interface that allows iteration over peers.
type PeersCounter ¶ added in v1.8.0
type Select ¶ added in v1.17.0
Select defines the different filters that can be used with the Peer iterators. The fields only take effect if set to true. The logical AND operator is applied to multiple selected fields.
type SetStorageRadiuser ¶ added in v1.8.0
type SetStorageRadiuser interface {
SetStorageRadius(uint8)
}
Directories ¶
Path | Synopsis |
---|---|
Package kademlia provides an implementation of the topology.Driver interface in a way that a kademlia connectivity is actively maintained by the node.
|
Package kademlia provides an implementation of the topology.Driver interface in a way that a kademlia connectivity is actively maintained by the node. |
internal/metrics
Package metrics provides service for collecting various metrics about peers.
|
Package metrics provides service for collecting various metrics about peers. |
internal/waitnext
Package metrics provides service for collecting various metrics about peers.
|
Package metrics provides service for collecting various metrics about peers. |
Click to show internal directories.
Click to hide internal directories.