Merge pull request #541 from hisundar/moss_child_colls
Add Snapshot interface methods for moss child collections feature
This commit is contained in:
commit
dbdb8b984d
|
@ -102,8 +102,9 @@ type llStore struct {
|
||||||
// llSnapshot represents a lower-level snapshot, wrapping a bleve
|
// llSnapshot represents a lower-level snapshot, wrapping a bleve
|
||||||
// store.KVReader, and implements the moss.Snapshot interface.
|
// store.KVReader, and implements the moss.Snapshot interface.
|
||||||
type llSnapshot struct {
|
type llSnapshot struct {
|
||||||
llStore *llStore // Holds 1 refs on the llStore.
|
llStore *llStore // Holds 1 refs on the llStore.
|
||||||
kvReader store.KVReader
|
kvReader store.KVReader
|
||||||
|
childSnapshots map[string]*llSnapshot
|
||||||
|
|
||||||
m sync.Mutex // Protects fields that follow.
|
m sync.Mutex // Protects fields that follow.
|
||||||
refs int
|
refs int
|
||||||
|
@ -316,6 +317,29 @@ func (llss *llSnapshot) decRef() {
|
||||||
llss.m.Unlock()
|
llss.m.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ChildCollectionNames returns an array of child collection name strings.
|
||||||
|
func (llss *llSnapshot) ChildCollectionNames() ([]string, error) {
|
||||||
|
var childCollections = make([]string, len(llss.childSnapshots))
|
||||||
|
idx := 0
|
||||||
|
for name, _ := range llss.childSnapshots {
|
||||||
|
childCollections[idx] = name
|
||||||
|
idx++
|
||||||
|
}
|
||||||
|
return childCollections, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// ChildCollectionSnapshot returns a Snapshot on a given child
|
||||||
|
// collection by its name.
|
||||||
|
func (llss *llSnapshot) ChildCollectionSnapshot(childCollectionName string) (
|
||||||
|
moss.Snapshot, error) {
|
||||||
|
childSnapshot, exists := llss.childSnapshots[childCollectionName]
|
||||||
|
if !exists {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
childSnapshot.addRef()
|
||||||
|
return childSnapshot, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (llss *llSnapshot) Close() error {
|
func (llss *llSnapshot) Close() error {
|
||||||
llss.decRef()
|
llss.decRef()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user