forked from ipfs/interface-go-ipfs-core
-
Notifications
You must be signed in to change notification settings - Fork 1
/
block.go
43 lines (32 loc) · 1.19 KB
/
block.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
package iface
import (
"context"
path "github.com/ETHFSx/interface-go-ipfs-core/path"
"io"
"github.com/ETHFSx/interface-go-ipfs-core/options"
"github.com/libp2p/go-libp2p-core/peer"
"github.com/ipfs/go-cid"
)
// BlockStat contains information about a block
type BlockStat interface {
// Size is the size of a block
Size() int
// Path returns path to the block
Path() path.Resolved
}
// BlockAPI specifies the interface to the block layer
type BlockAPI interface {
// Put imports raw block data, hashing it using specified settings.
Put(context.Context, io.Reader, ...options.BlockPutOption) (BlockStat, error)
Push(context.Context, uint32, peer.ID, cid.Cid) error
// Get attempts to resolve the path and return a reader for data in the block
Get(context.Context, path.Path) (io.Reader, error)
// Rm removes the block specified by the path from local blockstore.
// By default an error will be returned if the block can't be found locally.
//
// NOTE: If the specified block is pinned it won't be removed and no error
// will be returned
Rm(context.Context, path.Path, ...options.BlockRmOption) error
// Stat returns information on
Stat(context.Context, path.Path) (BlockStat, error)
}