-
Notifications
You must be signed in to change notification settings - Fork 11
/
provider.go
53 lines (41 loc) · 1.24 KB
/
provider.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
/*
Copyright and license information from original project:
Licence: https://github.com/google/trillian/blob/6127136b153156fc6becb74edd21259fe4260ddc/LICENSE
Source: https://github.com/google/trillian/blob/09456fa3331789ba45a5edf1eedb8c1cdc98c3ff/storage/postgres/provider.go
Copyright SecureKey Technologies Inc. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package memory
import (
"sync"
"github.com/google/trillian/monitoring"
"github.com/google/trillian/storage"
"github.com/google/trillian/storage/memory"
)
var (
newOnce sync.Once //nolint: gochecknoglobals
newInstance storage.Provider //nolint: gochecknoglobals
)
type memProvider struct {
mf monitoring.MetricFactory
ts *memory.TreeStorage
}
// NewMemoryStorageProvider return new memory provider.
func NewMemoryStorageProvider(mf monitoring.MetricFactory) (storage.Provider, error) {
newOnce.Do(func() {
newInstance = &memProvider{
mf: mf,
ts: memory.NewTreeStorage(),
}
})
return newInstance, nil
}
func (s *memProvider) LogStorage() storage.LogStorage {
return memory.NewLogStorage(s.ts, s.mf)
}
func (s *memProvider) AdminStorage() storage.AdminStorage {
return memory.NewAdminStorage(s.ts)
}
func (s *memProvider) Close() error {
return nil
}