kubo/net/mock2/interface.go
Juan Batiz-Benet e6a7179a8a mock2: removed list to fix bugs
container/lists suck
2014-12-17 23:25:39 -08:00

70 lines
1.8 KiB
Go

// Package mocknet provides a mock net.Network to test with.
//
// - a Mocknet has many inet.Networks
// - a Mocknet has many Links
// - a Link joins two inet.Networks
// - inet.Conns and inet.Streams are created by inet.Networks
package mocknet
import (
"io"
"time"
inet "github.com/jbenet/go-ipfs/net"
peer "github.com/jbenet/go-ipfs/peer"
)
type Mocknet interface {
GenPeer() (inet.Network, error)
AddPeer(peer.ID) (inet.Network, error)
// retrieve things
Peer(peer.ID) peer.Peer
Peers() []peer.Peer
Net(peer.ID) inet.Network
Nets() []inet.Network
LinksBetweenPeers(a, b peer.Peer) []Link
LinksBetweenNets(a, b inet.Network) []Link
PrintLinkMap(io.Writer)
// Links are the **ability to connect**.
// think of Links as the physical medium.
// For p1 and p2 to connect, a link must exist between them.
// (this makes it possible to test dial failures, and
// things like relaying traffic)
LinkPeers(peer.Peer, peer.Peer) (Link, error)
LinkNets(inet.Network, inet.Network) (Link, error)
Unlink(Link) error
UnlinkPeers(peer.Peer, peer.Peer) error
UnlinkNets(inet.Network, inet.Network) error
// LinkDefaults are the default options that govern links
// if they do not have thier own option set.
SetLinkDefaults(LinkOptions)
LinkDefaults() LinkOptions
// Connections are the usual. Connecting means Dialing.
// **to succeed, peers must be linked beforehand**
ConnectPeers(peer.Peer, peer.Peer) error
ConnectNets(inet.Network, inet.Network) error
DisconnectPeers(peer.Peer, peer.Peer) error
DisconnectNets(inet.Network, inet.Network) error
}
type LinkOptions struct {
Latency time.Duration
Bandwidth int // in bytes-per-second
// we can make these values distributions down the road.
}
type Link interface {
Networks() []inet.Network
Peers() []peer.Peer
SetOptions(LinkOptions)
Options() LinkOptions
// Metrics() Metrics
}