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
|
||||
// store.KVReader, and implements the moss.Snapshot interface.
|
||||
type llSnapshot struct {
|
||||
llStore *llStore // Holds 1 refs on the llStore.
|
||||
kvReader store.KVReader
|
||||
llStore *llStore // Holds 1 refs on the llStore.
|
||||
kvReader store.KVReader
|
||||
childSnapshots map[string]*llSnapshot
|
||||
|
||||
m sync.Mutex // Protects fields that follow.
|
||||
refs int
|
||||
@ -316,6 +317,29 @@ func (llss *llSnapshot) decRef() {
|
||||
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 {
|
||||
llss.decRef()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user