p2p

package
v0.0.0-...-77b6ffe Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 23, 2020 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxRespBufSize  = 100
	MaxNearestPeers = 20
	MaxStreamNum    = 1000
	DefaultTimeout  = time.Second * 60
)

Variables

View Source
var (
	ErrInvalidType         = errors.New("invalid data type of message")
	ErrMsgTypeNotMatchData = errors.New("message type is not match with data")
)
View Source
var (
	TransProtocol = protocol.ID("/chain/1.0.0.")
)

Functions

func B64DecodePrivKey

func B64DecodePrivKey(data string) (crypto.PrivKey, error)

Base64 decode and return private_key

func B64EncodePrivKey

func B64EncodePrivKey(priv crypto.PrivKey) (string, error)

Base64 encode private_key and return a b64 string

func GetCompleteAddrs

func GetCompleteAddrs(h host.Host) ([]ma.Multiaddr, error)

Reverse func of ParseFromIPFSAddr

func ParseFromIPFSAddr

func ParseFromIPFSAddr(ipfsAddr ma.Multiaddr) (peer.ID, ma.Multiaddr, error)

Parse ipfs addr like '/ip4/127.0.0.1/tcp/65532/ipfs/QmWxRLJvALbQRqE8ay91e5kzeNuPkNZQ4UkvXRrPxfXFuX' Split it to '/ip4/127.0.0.1/tcp/65532' and 'QmWxRLJvALbQRqE8ay91e5kzeNuPkNZQ4UkvXRrPxfXFuX'(peer id)

func RandomGeneratePid

func RandomGeneratePid() (peer.ID, error)

Random generate a peer id

Types

type BroadcastEvent

type BroadcastEvent struct {
	Typ  string
	Data []byte
}

type Config

type Config struct {
	// contains filtered or unexported fields
}

type DiscvActiveEvent

type DiscvActiveEvent struct{}

DiscvActive will be throw when peers discover run 6 rounds

type MulticastEvent

type MulticastEvent struct {
	Targets []peer.ID
	Typ     string
	Data    []byte
}

Multicast msg with p2p network layer

type MulticastNeighborEvent

type MulticastNeighborEvent struct {
	Typ   string
	Data  []byte
	Count int
}

Multicast msg to `count` nearest neighbor

type Peer

type Peer struct {
	// contains filtered or unexported fields
}

Peer stands for a logical peer of tinychain's p2p layer

func New

func New(config *common.Config) (*Peer, error)

Creates new peer struct

func (*Peer) AddProtocol

func (p *Peer) AddProtocol(proto common.Protocol) error

func (*Peer) Broadcast

func (peer *Peer) Broadcast(pbName string, data []byte)

func (*Peer) Connect

func (peer *Peer) Connect(pid peer.ID) error

Connect to a peer

func (*Peer) ConnectWithIPFS

func (peer *Peer) ConnectWithIPFS(addr ma.Multiaddr) error

Link to a unknown peer with its ipfs multiaddr and send handshake

func (*Peer) DelProtocol

func (p *Peer) DelProtocol(proto common.Protocol)

func (*Peer) ID

func (peer *Peer) ID() peer.ID

func (*Peer) Multicast

func (peer *Peer) Multicast(pids []peer.ID, pbName string, data []byte)

Multicast send msg to given peers.

func (*Peer) MulticastNeighbor

func (peer *Peer) MulticastNeighbor(pbName string, data []byte, count int)

MulticastNeighbor retrieves `n` nearest neighbor from route_table and sends message to them.

func (*Peer) Send

func (peer *Peer) Send(pid peer.ID, typ string, data []byte) error

Send message to a peer

func (*Peer) Start

func (peer *Peer) Start()

func (*Peer) Stop

func (peer *Peer) Stop()

type RandomSendEvnet

type RandomSendEvnet struct {
	Typ  string
	Data []byte
}

Random Multicast message with p2p network layer

type RouteTable

type RouteTable struct {
	// contains filtered or unexported fields
}

func NewRouteTable

func NewRouteTable(config *Config, peer *Peer) *RouteTable

func (*RouteTable) AddIPFSPeer

func (table *RouteTable) AddIPFSPeer(addr ma.Multiaddr) error

func (*RouteTable) AddPeer

func (table *RouteTable) AddPeer(pid peer.ID, addr ma.Multiaddr)

Add peer to route table

func (*RouteTable) AddPeerInfo

func (table *RouteTable) AddPeerInfo(prettyID string, addrStr []string) error

Add peer to route table

func (*RouteTable) AddPeerWithAddrs

func (table *RouteTable) AddPeerWithAddrs(pid peer.ID, addrs []ma.Multiaddr)

Add peer with []ma.Multiaddrs

func (*RouteTable) AddPeers

func (table *RouteTable) AddPeers(peers []*pb.PeerInfo) error

Add peers when get 'RouteSyncResp'

func (*RouteTable) GetNearestPeers

func (table *RouteTable) GetNearestPeers(pid peer.ID) []peerstore.PeerInfo

func (*RouteTable) HasPeer

func (table *RouteTable) HasPeer(pid peer.ID) bool

func (*RouteTable) LoadRTableFromFile

func (table *RouteTable) LoadRTableFromFile()

Load route table from file

func (*RouteTable) Peers

func (table *RouteTable) Peers() map[peer.ID][]ma.Multiaddr

func (*RouteTable) RemovePeer

func (table *RouteTable) RemovePeer(pid peer.ID)

func (*RouteTable) SaveRTableToFile

func (table *RouteTable) SaveRTableToFile() error

Save route table to file

func (*RouteTable) Start

func (table *RouteTable) Start()

Start route table looping for route sync

func (*RouteTable) Stop

func (table *RouteTable) Stop()

Stop route table if is looping sync

func (*RouteTable) SyncFromPeer

func (table *RouteTable) SyncFromPeer(pid peer.ID) error

Sync route table with a peer It send `RouteSyncReq` message and transfer nil data

func (*RouteTable) SyncRouteFromNeighbor

func (table *RouteTable) SyncRouteFromNeighbor()

Looping sync route table with neighbor

func (*RouteTable) SyncRouteWithSeeds

func (table *RouteTable) SyncRouteWithSeeds()

Sync route table

type SendMsgEvent

type SendMsgEvent struct {
	Target peer.ID // Target peer id
	Typ    string  // Message type
	Data   []byte  // Message data
}

Message sent with p2p network layer

type Stream

type Stream struct {
	// contains filtered or unexported fields
}

func NewStream

func NewStream(pid peer.ID, addr ma.Multiaddr, stream libnet.Stream, peer *Peer) *Stream

func NewStreamWithPid

func NewStreamWithPid(pid peer.ID, peer *Peer) *Stream

func (*Stream) SetReadDeadline

func (s *Stream) SetReadDeadline(name string)

func (*Stream) String

func (s *Stream) String() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL