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 ¶
type Halter interface { // Halt the topology from initiating new connections // while allowing it to still run. Halt() }
type KadBins ¶
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 ¶
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 ¶
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 ¶
type NeighborhoodDepther interface {
NeighborhoodDepth() uint8
}
type PeerInfo ¶
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 ¶
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 ¶
type Select ¶
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 ¶
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.