Documentation
¶
Index ¶
- Constants
- Variables
- func CalcFileSHA256(f *os.File) (string, error)
- func CalcPathSHA256(fpath string) (string, error)
- func CalcSHA256(data []byte) (string, error)
- func NewProtocol() *protocols
- type AggrProofProtocol
- func (e *AggrProofProtocol) AggrProofReq(peerId peer.ID, ihash, shash []byte, qslice []*pb.Qslice, puk, sign []byte) (uint32, error)
- func (e AggrProofProtocol) FileReq(peerId peer.ID, filehash string, filetype pb.FileType, fpath string) (uint32, error)
- func (e AggrProofProtocol) IdleReq(peerId peer.ID, filesize, blocknum uint64, pubkey, sign []byte) (uint32, error)
- func (e AggrProofProtocol) ReadFileAction(id peer.ID, roothash, datahash, path string, size int64) error
- func (e AggrProofProtocol) TagPushReq(peerid peer.ID) (uint32, error)
- func (e AggrProofProtocol) TagReq(peerId peer.ID, filename, customdata string, blocknum uint64) (uint32, error)
- func (e AggrProofProtocol) WriteFileAction(id peer.ID, roothash, path string) error
- type CustomDataTagProtocol
- func (e CustomDataTagProtocol) FileReq(peerId peer.ID, filehash string, filetype pb.FileType, fpath string) (uint32, error)
- func (e CustomDataTagProtocol) IdleReq(peerId peer.ID, filesize, blocknum uint64, pubkey, sign []byte) (uint32, error)
- func (e CustomDataTagProtocol) ReadFileAction(id peer.ID, roothash, datahash, path string, size int64) error
- func (e CustomDataTagProtocol) TagPushReq(peerid peer.ID) (uint32, error)
- func (e CustomDataTagProtocol) TagReq(peerId peer.ID, filename, customdata string, blocknum uint64) (uint32, error)
- func (e CustomDataTagProtocol) WriteFileAction(id peer.ID, roothash, path string) error
- type DataDirs
- type DiscoveredPeer
- type FileProtocol
- func (e FileProtocol) FileReq(peerId peer.ID, filehash string, filetype pb.FileType, fpath string) (uint32, error)
- func (e FileProtocol) IdleReq(peerId peer.ID, filesize, blocknum uint64, pubkey, sign []byte) (uint32, error)
- func (e FileProtocol) ReadFileAction(id peer.ID, roothash, datahash, path string, size int64) error
- func (e FileProtocol) TagPushReq(peerid peer.ID) (uint32, error)
- func (e FileProtocol) TagReq(peerId peer.ID, filename, customdata string, blocknum uint64) (uint32, error)
- func (e FileProtocol) WriteFileAction(id peer.ID, roothash, path string) error
- type IdleDataTagProtocol
- func (e IdleDataTagProtocol) FileReq(peerId peer.ID, filehash string, filetype pb.FileType, fpath string) (uint32, error)
- func (e IdleDataTagProtocol) IdleReq(peerId peer.ID, filesize, blocknum uint64, pubkey, sign []byte) (uint32, error)
- func (e IdleDataTagProtocol) ReadFileAction(id peer.ID, roothash, datahash, path string, size int64) error
- func (e IdleDataTagProtocol) TagPushReq(peerid peer.ID) (uint32, error)
- func (e IdleDataTagProtocol) TagReq(peerId peer.ID, filename, customdata string, blocknum uint64) (uint32, error)
- func (e IdleDataTagProtocol) WriteFileAction(id peer.ID, roothash, path string) error
- type Node
- func (n *Node) AddMultiaddrToPearstore(multiaddr string, t time.Duration) (peer.ID, error)
- func (n *Node) Addrs() []ma.Multiaddr
- func (n *Node) AuthenticateMessage(message proto.Message, data *pb.MessageData) bool
- func (n *Node) Close() error
- func (n *Node) ConnManager() connmgr.ConnManager
- func (n *Node) Connect(ctx context.Context, pi peer.AddrInfo) error
- func (n *Node) DiscoveredPeer() <-chan DiscoveredPeer
- func (n *Node) EventBus() event.Bus
- func (e Node) FileReq(peerId peer.ID, filehash string, filetype pb.FileType, fpath string) (uint32, error)
- func (n *Node) GetBootstraps() []string
- func (n *Node) GetDhtProtocolVersion() string
- func (n *Node) GetDirs() DataDirs
- func (n *Node) GetDiscoverSt() bool
- func (n *Node) GetIdleDataCh() <-chan string
- func (n *Node) GetIdleFileTee() string
- func (n *Node) GetIdleTagCh() <-chan string
- func (n *Node) GetOwnPublickey() []byte
- func (n *Node) GetPeerIdFromPubkey(pubkey []byte) (string, error)
- func (n *Node) GetProtocolVersion() string
- func (n *Node) GetServiceFileTee() string
- func (n *Node) GetServiceTagCh() <-chan string
- func (n *Node) ID() peer.ID
- func (e Node) IdleReq(peerId peer.ID, filesize, blocknum uint64, pubkey, sign []byte) (uint32, error)
- func (n *Node) Multiaddr() string
- func (n *Node) Mux() protocol.Switch
- func (n *Node) Network() network.Network
- func (n *Node) NewAggrProofProtocol() *AggrProofProtocol
- func (n *Node) NewCustomDataTagProtocol() *CustomDataTagProtocol
- func (n *Node) NewFileProtocol() *FileProtocol
- func (n *Node) NewIdleDataTagProtocol() *IdleDataTagProtocol
- func (n *Node) NewMessageData(messageId string, gossip bool) *pb.MessageData
- func (n *Node) NewPeerStream(id peer.ID, p protocol.ID) (network.Stream, error)
- func (n *Node) NewPushTagProtocol() *PushTagProtocol
- func (n *Node) NewReadFileProtocol() *ReadFileProtocol
- func (n *Node) NewStream(ctx context.Context, p peer.ID, pids ...protocol.ID) (network.Stream, error)
- func (n *Node) NewWriteFileProtocol() *WriteFileProtocol
- func (n *Node) Peerstore() peerstore.Peerstore
- func (n *Node) PrivatekeyPath() string
- func (e Node) ReadFileAction(id peer.ID, roothash, datahash, path string, size int64) error
- func (n *Node) RemoveStreamHandler(pid protocol.ID)
- func (n *Node) SendFile(ctx context.Context, id peer.ID, path string) error
- func (n *Node) SendMsgToStream(s network.Stream, msg []byte) error
- func (n *Node) SendProtoMessage(id peer.ID, p protocol.ID, data proto.Message) error
- func (n *Node) SetBootstraps(bootstrap []string)
- func (n *Node) SetIdleFileTee(peerid string)
- func (n *Node) SetServiceFileTee(peerid string)
- func (n *Node) SetStreamHandler(pid protocol.ID, handler network.StreamHandler)
- func (n *Node) SetStreamHandlerMatch(pid protocol.ID, m func(protocol.ID) bool, handler network.StreamHandler)
- func (n *Node) SignProtoMessage(message proto.Message) ([]byte, error)
- func (n *Node) StarFileTransferProtocol()
- func (n *Node) StartDiscover()
- func (e Node) TagPushReq(peerid peer.ID) (uint32, error)
- func (e Node) TagReq(peerId peer.ID, filename, customdata string, blocknum uint64) (uint32, error)
- func (n *Node) Workspace() string
- func (e Node) WriteFileAction(id peer.ID, roothash, path string) error
- type P2P
- type ProofFileType
- type Protocol
- type PushTagProtocol
- func (e PushTagProtocol) FileReq(peerId peer.ID, filehash string, filetype pb.FileType, fpath string) (uint32, error)
- func (e PushTagProtocol) IdleReq(peerId peer.ID, filesize, blocknum uint64, pubkey, sign []byte) (uint32, error)
- func (e PushTagProtocol) ReadFileAction(id peer.ID, roothash, datahash, path string, size int64) error
- func (e PushTagProtocol) TagPushReq(peerid peer.ID) (uint32, error)
- func (e PushTagProtocol) TagReq(peerId peer.ID, filename, customdata string, blocknum uint64) (uint32, error)
- func (e PushTagProtocol) WriteFileAction(id peer.ID, roothash, path string) error
- type ReadFileProtocol
- func (e ReadFileProtocol) FileReq(peerId peer.ID, filehash string, filetype pb.FileType, fpath string) (uint32, error)
- func (e ReadFileProtocol) IdleReq(peerId peer.ID, filesize, blocknum uint64, pubkey, sign []byte) (uint32, error)
- func (e ReadFileProtocol) ReadFileAction(id peer.ID, roothash, datahash, path string, size int64) error
- func (e ReadFileProtocol) TagPushReq(peerid peer.ID) (uint32, error)
- func (e ReadFileProtocol) TagReq(peerId peer.ID, filename, customdata string, blocknum uint64) (uint32, error)
- func (e ReadFileProtocol) WriteFileAction(id peer.ID, roothash, path string) error
- type WriteFileProtocol
- func (e WriteFileProtocol) FileReq(peerId peer.ID, filehash string, filetype pb.FileType, fpath string) (uint32, error)
- func (e WriteFileProtocol) IdleReq(peerId peer.ID, filesize, blocknum uint64, pubkey, sign []byte) (uint32, error)
- func (e WriteFileProtocol) ReadFileAction(id peer.ID, roothash, datahash, path string, size int64) error
- func (e WriteFileProtocol) TagPushReq(peerid peer.ID) (uint32, error)
- func (e WriteFileProtocol) TagReq(peerId peer.ID, filename, customdata string, blocknum uint64) (uint32, error)
- func (e WriteFileProtocol) WriteFileAction(id peer.ID, roothash, path string) error
Constants ¶
const ( SIZE_1KiB = 1024 SIZE_1MiB = 1024 * SIZE_1KiB SIZE_1GiB = 1024 * SIZE_1MiB )
byte size
const ( FileType_ServiceFile uint32 = iota FileType_IdleFile FileType_TagFile FileType_MusFile FileType_UsFile FileType_NamesFile )
const ( // FileDataDirectionry = "file" TmpDataDirectionry = "tmp" IdleDataDirectionry = "space" IdleTagDirectionry = "itag" ServiceTagDirectionry = "stag" ProofDirectionry = "proof" // IdleProofFile = "iproof" ServiceProofFile = "sproof" )
const AggrProof_PROTOCOL = "/kldr/apv/1"
const AllIpAddress = "0.0.0.0"
const BufferSize = 64 * SIZE_1KiB
const CustomDataTag_Protocol = "/kldr/cdtg/1"
const DataShards = 2
const DirMode = 0644
const FILE_PROTOCOL = "/kldr/kft/1"
const FileProtocolBufSize = 2 * 1024 * 1024
const FileProtocolMsgBuf = 16 * 1024 * 1024
const FragmentSize = 8 * SIZE_1MiB
const IdleDataTag_Protocol = "/kldr/idtg/1"
const IdleProtocolMsgBuf = 1024
const LocalAddress = "127.0.0.1"
const MaxCustomDataLength = 255
const MaxFileNameLength = 255
const MusProtocolMsgBuf = 32
const P2PReadReqRespTime = time.Duration(time.Second * 15)
const P2PResponseFailed uint32 = 400
const P2PResponseFinish uint32 = 210
const P2PResponseOK uint32 = 200
const P2PWriteReqRespTime = time.Duration(time.Second * 15)
const ParShards = 1
const PushTag_Protocol = "/kldr/tagpush/1"
const Rendezvous = "/rendezvous/1.0.0"
const SegmentSize = 16 * SIZE_1MiB
const TagProtocolMsgBuf = 1024 * 1024
Variables ¶
var ( FileNameLengthErr = fmt.Errorf("filename length exceeds %d", MaxFileNameLength) FileNameEmptyErr = fmt.Errorf("filename is empty") CustomDataLengthErr = fmt.Errorf("custom data length exceeds %d", MaxCustomDataLength) )
Functions ¶
func CalcFileSHA256 ¶ added in v0.0.24
CalcFileSHA256 is used to calculate the sha256 value of the file type.
func CalcPathSHA256 ¶ added in v0.0.24
CalcPathSHA256 is used to calculate the sha256 value of a file with a given path.
func CalcSHA256 ¶ added in v0.0.24
CalcSHA256 is used to calculate the sha256 value of the data.
func NewProtocol ¶ added in v0.0.24
func NewProtocol() *protocols
Types ¶
type AggrProofProtocol ¶ added in v0.0.24
type AggrProofProtocol struct {
*Node
}
func (*AggrProofProtocol) AggrProofReq ¶ added in v0.0.24
func (AggrProofProtocol) ReadFileAction ¶ added in v0.0.24
func (AggrProofProtocol) TagPushReq ¶ added in v0.0.24
remote peer requests handler
type CustomDataTagProtocol ¶ added in v0.0.24
type CustomDataTagProtocol struct {
*Node
}
func (CustomDataTagProtocol) ReadFileAction ¶ added in v0.0.24
func (CustomDataTagProtocol) TagPushReq ¶ added in v0.0.24
remote peer requests handler
type DiscoveredPeer ¶ added in v0.0.24
type FileProtocol ¶ added in v0.0.24
type FileProtocol struct {
*Node
}
func (FileProtocol) ReadFileAction ¶ added in v0.0.24
func (FileProtocol) TagPushReq ¶ added in v0.0.24
remote peer requests handler
type IdleDataTagProtocol ¶ added in v0.0.24
type IdleDataTagProtocol struct {
*Node
}
func (IdleDataTagProtocol) ReadFileAction ¶ added in v0.0.24
func (IdleDataTagProtocol) TagPushReq ¶ added in v0.0.24
remote peer requests handler
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
Node type - Implementation of a P2P Host
func (*Node) AddMultiaddrToPearstore ¶
func (*Node) AuthenticateMessage ¶
Authenticate incoming p2p message message: a protobufs go data object data: common p2p message data
func (*Node) ConnManager ¶
func (n *Node) ConnManager() connmgr.ConnManager
ConnManager returns this hosts connection manager
func (*Node) Connect ¶
Connect ensures there is a connection between this host and the peer with given peer.ID. Connect will absorb the addresses in pi into its internal peerstore. If there is not an active connection, Connect will issue a h.Network.Dial, and block until a connection is open, or an error is returned. // TODO: Relay + NAT.
func (*Node) DiscoveredPeer ¶ added in v0.0.24
func (n *Node) DiscoveredPeer() <-chan DiscoveredPeer
func (*Node) GetBootstraps ¶ added in v0.0.24
func (*Node) GetDhtProtocolVersion ¶ added in v0.0.24
func (*Node) GetDiscoverSt ¶ added in v0.0.24
func (*Node) GetIdleDataCh ¶ added in v0.0.24
func (*Node) GetIdleFileTee ¶ added in v0.0.15
func (*Node) GetIdleTagCh ¶ added in v0.0.24
func (*Node) GetOwnPublickey ¶ added in v0.0.24
func (*Node) GetPeerIdFromPubkey ¶ added in v0.0.18
func (*Node) GetProtocolVersion ¶ added in v0.0.24
func (*Node) GetServiceFileTee ¶ added in v0.0.15
func (*Node) GetServiceTagCh ¶ added in v0.0.24
func (*Node) NewAggrProofProtocol ¶ added in v0.0.24
func (n *Node) NewAggrProofProtocol() *AggrProofProtocol
func (*Node) NewCustomDataTagProtocol ¶ added in v0.0.24
func (n *Node) NewCustomDataTagProtocol() *CustomDataTagProtocol
func (*Node) NewFileProtocol ¶ added in v0.0.24
func (n *Node) NewFileProtocol() *FileProtocol
func (*Node) NewIdleDataTagProtocol ¶ added in v0.0.24
func (n *Node) NewIdleDataTagProtocol() *IdleDataTagProtocol
func (*Node) NewMessageData ¶
func (n *Node) NewMessageData(messageId string, gossip bool) *pb.MessageData
helper method - generate message data shared between all node's p2p protocols messageId: unique for requests, copied from request for responses
func (*Node) NewPeerStream ¶ added in v0.0.9
NewPeerStream
func (*Node) NewPushTagProtocol ¶ added in v0.0.24
func (n *Node) NewPushTagProtocol() *PushTagProtocol
func (*Node) NewReadFileProtocol ¶ added in v0.0.24
func (n *Node) NewReadFileProtocol() *ReadFileProtocol
func (*Node) NewStream ¶
func (n *Node) NewStream(ctx context.Context, p peer.ID, pids ...protocol.ID) (network.Stream, error)
NewStream opens a new stream to given peer p, and writes a p2p/protocol header with given ProtocolID. If there is no connection to p, attempts to create one. If ProtocolID is "", writes no header. (Threadsafe)
func (*Node) NewWriteFileProtocol ¶ added in v0.0.24
func (n *Node) NewWriteFileProtocol() *WriteFileProtocol
func (*Node) PrivatekeyPath ¶
func (Node) ReadFileAction ¶ added in v0.0.24
func (*Node) RemoveStreamHandler ¶
RemoveStreamHandler removes a handler on the mux that was set by SetStreamHandler
func (*Node) SendMsgToStream ¶ added in v0.0.9
SendMsgToStream
func (*Node) SendProtoMessage ¶
helper method - writes a protobuf go data object to a network stream data: reference of protobuf go data object to send (not the object itself) s: network stream to write the data to
func (*Node) SetBootstraps ¶ added in v0.0.24
func (*Node) SetIdleFileTee ¶ added in v0.0.15
func (*Node) SetServiceFileTee ¶ added in v0.0.15
func (*Node) SetStreamHandler ¶
func (n *Node) SetStreamHandler(pid protocol.ID, handler network.StreamHandler)
SetStreamHandler sets the protocol handler on the Host's Mux. This is equivalent to: host.Mux().SetHandler(proto, handler) (Threadsafe)
func (*Node) SetStreamHandlerMatch ¶
func (n *Node) SetStreamHandlerMatch(pid protocol.ID, m func(protocol.ID) bool, handler network.StreamHandler)
SetStreamHandlerMatch sets the protocol handler on the Host's Mux using a matching function for protocol selection.
func (*Node) SignProtoMessage ¶
sign an outgoing p2p message payload
func (*Node) StarFileTransferProtocol ¶ added in v0.0.9
func (n *Node) StarFileTransferProtocol()
func (*Node) StartDiscover ¶ added in v0.0.24
func (n *Node) StartDiscover()
func (Node) TagPushReq ¶ added in v0.0.24
remote peer requests handler
type P2P ¶
type P2P interface { host.Host // lib-p2p host Protocol // protocol GetDiscoverSt() bool StartDiscover() PrivatekeyPath() string Workspace() string Multiaddr() string AddMultiaddrToPearstore(multiaddr string, t time.Duration) (peer.ID, error) GetPeerIdFromPubkey(pubkey []byte) (string, error) GetOwnPublickey() []byte GetProtocolVersion() string GetDhtProtocolVersion() string GetDirs() DataDirs GetBootstraps() []string SetBootstraps(bootstrap []string) DiscoveredPeer() <-chan DiscoveredPeer GetIdleDataCh() <-chan string GetIdleTagCh() <-chan string GetServiceTagCh() <-chan string }
P2P is an object participating in a p2p network, which implements protocols or provides services. It handles requests like a Server, and issues requests like a Client. It is called Host because it is both Server and Client (and Peer may be confusing). It references libp2p: https://github.com/libp2p/go-libp2p
func NewBasicNode ¶
func NewBasicNode( ctx context.Context, port int, workspace string, protocolVersion string, dhtProtocolVersion string, privatekeypath string, bootstrap []string, cmgr connmgr.ConnManager, ) (P2P, error)
NewBasicNode constructs a new *Node
multiaddr: listen addresses of p2p host workspace: service working directory privatekeypath: private key file If it's empty, automatically created in the program working directory If it's a directory, it will be created in the specified directory
type ProofFileType ¶ added in v0.0.24
type Protocol ¶ added in v0.0.24
type Protocol interface { WriteFileAction(id peer.ID, roothash, path string) error ReadFileAction(id peer.ID, roothash, datahash, path string, size int64) error TagPushReq(peerid peer.ID) (uint32, error) IdleReq(peerId peer.ID, filesize, blocknum uint64, pubkey, sign []byte) (uint32, error) TagReq(peerId peer.ID, filename, customdata string, blocknum uint64) (uint32, error) FileReq(peerId peer.ID, filehash string, filetype pb.FileType, fpath string) (uint32, error) }
type PushTagProtocol ¶ added in v0.0.24
type PushTagProtocol struct {
*Node
}
func (PushTagProtocol) ReadFileAction ¶ added in v0.0.24
func (PushTagProtocol) TagPushReq ¶ added in v0.0.24
remote peer requests handler
type ReadFileProtocol ¶ added in v0.0.24
type ReadFileProtocol struct { *Node // local host // contains filtered or unexported fields }
func (ReadFileProtocol) ReadFileAction ¶ added in v0.0.24
func (ReadFileProtocol) TagPushReq ¶ added in v0.0.24
remote peer requests handler
type WriteFileProtocol ¶ added in v0.0.24
type WriteFileProtocol struct { *Node // contains filtered or unexported fields }
func (WriteFileProtocol) ReadFileAction ¶ added in v0.0.24
func (WriteFileProtocol) TagPushReq ¶ added in v0.0.24
remote peer requests handler