-
-
Notifications
You must be signed in to change notification settings - Fork 80
/
interface.go
52 lines (44 loc) · 1.21 KB
/
interface.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package client
import (
"context"
"github.com/bitmagnet-io/bitmagnet/internal/protocol"
"github.com/bits-and-blooms/bloom/v3"
"net/netip"
)
type Client interface {
Ping(ctx context.Context, addr netip.AddrPort) (PingResult, error)
FindNode(ctx context.Context, addr netip.AddrPort, target protocol.ID) (FindNodeResult, error)
GetPeers(ctx context.Context, addr netip.AddrPort, infoHash protocol.ID) (GetPeersResult, error)
GetPeersScrape(ctx context.Context, addr netip.AddrPort, infoHash protocol.ID) (GetPeersScrapeResult, error)
SampleInfoHashes(ctx context.Context, addr netip.AddrPort, target protocol.ID) (SampleInfoHashesResult, error)
}
type PingResult struct {
ID protocol.ID
}
type FindNodeResult struct {
ID protocol.ID
Nodes []NodeInfo
}
type GetPeersResult struct {
ID protocol.ID
Values []netip.AddrPort
Nodes []NodeInfo
}
type GetPeersScrapeResult struct {
ID protocol.ID
Values []netip.AddrPort
Nodes []NodeInfo
BfPeers bloom.BloomFilter
BfSeeders bloom.BloomFilter
}
type SampleInfoHashesResult struct {
ID protocol.ID
Samples []protocol.ID
Nodes []NodeInfo
Num int
Interval int
}
type NodeInfo struct {
ID protocol.ID
Addr netip.AddrPort
}