0
0

Merge pull request #541 from hisundar/moss_child_colls

Add Snapshot interface methods for moss child collections feature
This commit is contained in:
Marty Schoch 2017-02-21 19:11:18 -05:00 committed by GitHub
commit dbdb8b984d

View File

@ -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()