-
Notifications
You must be signed in to change notification settings - Fork 6
/
interface.go
42 lines (38 loc) · 1.57 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
package dagsync
import (
"context"
"github.com/ipfs/go-cid"
"github.com/ipld/go-ipld-prime"
"github.com/libp2p/go-libp2p/core/peer"
"github.com/multiformats/go-multiaddr"
)
// Publisher is an interface for updating the published dag.
type Publisher interface {
// Addrs returns the addresses that the publisher is listening on.
Addrs() []multiaddr.Multiaddr
// ID returns the peer ID associated with the publisher.
ID() peer.ID
// Protocol returns multiaddr protocol code (P_P2P or P_HTTP).
Protocol() int
// AnnounceHead sends an announce messag, via all senders, to announce the
// current head advertisement CID. If there is no head, then does nothing.
AnnounceHead(context.Context) error
// AnnounceHeadWithAddrs sends an announce messag containing the specified
// addresses, via all senders, to announce the current head advertisement
// CID. If there is no head, then does nothing.
AnnounceHeadWithAddrs(context.Context, []multiaddr.Multiaddr) error
// SetRoot sets the root CID without publishing it.
SetRoot(context.Context, cid.Cid) error
// UpdateRoot sets the root CID and publishes its update via all senders.
UpdateRoot(context.Context, cid.Cid) error
// UpdateRootWithAddrs publishes an update for the DAG, using custom
// multiaddrs, via all senders.
UpdateRootWithAddrs(context.Context, cid.Cid, []multiaddr.Multiaddr) error
// Close publisher.
Close() error
}
// Syncer is the interface used to sync with a data source.
type Syncer interface {
GetHead(context.Context) (cid.Cid, error)
Sync(ctx context.Context, nextCid cid.Cid, sel ipld.Node) error
}