blob: 9c7b59d32f6a64654549fda78fb6dc36509849a8 (
about) (
plain) (
blame)
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
|
package memory
import (
"lindenii.org/go/furgit/object/id"
"lindenii.org/go/furgit/object/store"
"lindenii.org/go/furgit/object/typ"
"lindenii.org/go/lgo/sync"
)
// Memory is one in-memory object store.
//
// Labels: MT-Safe, Close-Caller.
type Memory struct {
objectFormat id.ObjectFormat
objects *sync.Map[id.ObjectID, storedObject]
}
// storedObject is one in-memory object entry.
type storedObject struct {
ty typ.Type
content []byte
}
var (
_ store.ObjectReader = (*Memory)(nil)
_ store.ObjectWriter = (*Memory)(nil)
)
// New builds one empty in-memory store for one object format.
func New(objectFormat id.ObjectFormat) *Memory {
return &Memory{
objectFormat: objectFormat,
objects: &sync.Map[id.ObjectID, storedObject]{},
}
}
// ObjectFormat returns the object format used by the store.
func (memory *Memory) ObjectFormat() id.ObjectFormat {
return memory.objectFormat
}
|