2012-11-24 11:33:34 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
2012-11-25 15:07:05 +00:00
|
|
|
"github.com/matttproud/prometheus/coding"
|
2012-11-24 11:33:34 +00:00
|
|
|
data "github.com/matttproud/prometheus/model/generated"
|
|
|
|
)
|
|
|
|
|
2012-11-25 15:07:05 +00:00
|
|
|
var (
|
|
|
|
existenceValue = coding.NewProtocolBufferEncoder(&data.MembershipIndexValueDDO{})
|
|
|
|
)
|
|
|
|
|
2012-11-24 11:33:34 +00:00
|
|
|
type LevigoMembershipIndex struct {
|
2012-11-25 15:07:05 +00:00
|
|
|
persistence *LevigoPersistence
|
2012-11-24 11:33:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (l *LevigoMembershipIndex) Close() error {
|
|
|
|
return l.persistence.Close()
|
|
|
|
}
|
|
|
|
|
2012-11-25 15:07:05 +00:00
|
|
|
func (l *LevigoMembershipIndex) Has(key coding.Encoder) (bool, error) {
|
2012-11-24 11:33:34 +00:00
|
|
|
return l.persistence.Has(key)
|
|
|
|
}
|
|
|
|
|
2012-11-25 15:07:05 +00:00
|
|
|
func (l *LevigoMembershipIndex) Drop(key coding.Encoder) error {
|
2012-11-24 11:33:34 +00:00
|
|
|
return l.persistence.Drop(key)
|
|
|
|
}
|
|
|
|
|
2012-11-25 15:07:05 +00:00
|
|
|
func (l *LevigoMembershipIndex) Put(key coding.Encoder) error {
|
|
|
|
return l.persistence.Put(key, existenceValue)
|
2012-11-24 11:33:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func NewLevigoMembershipIndex(storageRoot string, cacheCapacity, bitsPerBloomFilterEncoded int) (*LevigoMembershipIndex, error) {
|
|
|
|
var levigoPersistence *LevigoPersistence
|
|
|
|
var levigoPersistenceError error
|
|
|
|
|
|
|
|
if levigoPersistence, levigoPersistenceError = NewLevigoPersistence(storageRoot, cacheCapacity, bitsPerBloomFilterEncoded); levigoPersistenceError == nil {
|
|
|
|
levigoMembershipIndex := &LevigoMembershipIndex{
|
2012-11-25 15:07:05 +00:00
|
|
|
persistence: levigoPersistence,
|
2012-11-24 11:33:34 +00:00
|
|
|
}
|
|
|
|
return levigoMembershipIndex, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
return nil, levigoPersistenceError
|
|
|
|
}
|