forked from Symantec/Dominator
/
api.go
68 lines (54 loc) · 1.46 KB
/
api.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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package objectserver
import (
"io"
"time"
"github.com/Symantec/Dominator/lib/hash"
)
type FullObjectServer interface {
DeleteObject(hashVal hash.Hash) error
ObjectServer
LastMutationTime() time.Time
ListObjectSizes() map[hash.Hash]uint64
ListObjects() []hash.Hash
NumObjects() uint64
}
type AddCallback func(hashVal hash.Hash, length uint64, isNew bool)
type AddCallbackSetter interface {
SetAddCallback(callback AddCallback)
}
type GarbageCollector func(bytesToDelete uint64) (
bytesDeleted uint64, err error)
type GarbageCollectorSetter interface {
SetGarbageCollector(gc GarbageCollector)
}
type ObjectGetter interface {
GetObject(hashVal hash.Hash) (uint64, io.ReadCloser, error)
}
type ObjectsChecker interface {
CheckObjects(hashes []hash.Hash) ([]uint64, error)
}
type ObjectsGetter interface {
GetObjects(hashes []hash.Hash) (ObjectsReader, error)
}
type ObjectsReader interface {
Close() error
NextObject() (uint64, io.ReadCloser, error)
}
type ObjectServer interface {
AddObject(reader io.Reader, length uint64, expectedHash *hash.Hash) (
hash.Hash, bool, error)
ObjectGetter
ObjectsChecker
ObjectsGetter
}
type StashingObjectServer interface {
CommitObject(hash.Hash) error
DeleteStashedObject(hashVal hash.Hash) error
ObjectServer
StashOrVerifyObject(io.Reader, uint64, *hash.Hash) (
hash.Hash, []byte, error)
}
func GetObject(objSrv ObjectServer, hashVal hash.Hash) (
uint64, io.ReadCloser, error) {
return getObject(objSrv, hashVal)
}