Document the filters
This commit is contained in:
@@ -6,12 +6,15 @@ import (
|
|||||||
"realy.lol/filter"
|
"realy.lol/filter"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// T is a wrapper around an array of pointers to filter.T.
|
||||||
type T struct {
|
type T struct {
|
||||||
F []*filter.T
|
F []*filter.T
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make a new filters.T.
|
||||||
func Make(l int) *T { return &T{F: make([]*filter.T, l)} }
|
func Make(l int) *T { return &T{F: make([]*filter.T, l)} }
|
||||||
|
|
||||||
|
// GetFingerprints returns a collection of fingerprints (64 bit digest) of a set of filters.T.
|
||||||
func (f *T) GetFingerprints() (fps []uint64, err error) {
|
func (f *T) GetFingerprints() (fps []uint64, err error) {
|
||||||
for _, ff := range f.F {
|
for _, ff := range f.F {
|
||||||
var fp uint64
|
var fp uint64
|
||||||
@@ -23,10 +26,13 @@ func (f *T) GetFingerprints() (fps []uint64, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Len returns the number of elements in a filters.T.
|
||||||
func (f *T) Len() int { return len(f.F) }
|
func (f *T) Len() int { return len(f.F) }
|
||||||
|
|
||||||
|
// New creates a new filters.T out of a variadic list of filter.T.
|
||||||
func New(ff ...*filter.T) (f *T) { return &T{F: ff} }
|
func New(ff ...*filter.T) (f *T) { return &T{F: ff} }
|
||||||
|
|
||||||
|
// Match checks if a set of filters.T matches on an event.T.
|
||||||
func (f *T) Match(event *event.T) bool {
|
func (f *T) Match(event *event.T) bool {
|
||||||
for _, f := range f.F {
|
for _, f := range f.F {
|
||||||
if f.Matches(event) {
|
if f.Matches(event) {
|
||||||
@@ -36,8 +42,12 @@ func (f *T) Match(event *event.T) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *T) String() (s string) { return string(f.Marshal(nil)) }
|
// String returns a canonical sorted string of a slice of filters.T.
|
||||||
|
func (f *T) String() (s string) {
|
||||||
|
return string(f.Marshal(nil))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Marshal a filters.T into raw bytes, and append it to a provided slice, and return the result.
|
||||||
func (f *T) Marshal(dst []byte) (b []byte) {
|
func (f *T) Marshal(dst []byte) (b []byte) {
|
||||||
var err error
|
var err error
|
||||||
_ = err
|
_ = err
|
||||||
@@ -54,6 +64,7 @@ func (f *T) Marshal(dst []byte) (b []byte) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unmarshal a filters.T in JSON (minified) form and store it in the provided filters.T.
|
||||||
func (f *T) Unmarshal(b []byte) (r []byte, err error) {
|
func (f *T) Unmarshal(b []byte) (r []byte, err error) {
|
||||||
r = b[:]
|
r = b[:]
|
||||||
if len(r) < 1 {
|
if len(r) < 1 {
|
||||||
@@ -95,6 +106,7 @@ func (f *T) Unmarshal(b []byte) (r []byte, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GenFilters creates an arbitrary number of fake filters for tests.
|
||||||
func GenFilters(n int) (ff *T, err error) {
|
func GenFilters(n int) (ff *T, err error) {
|
||||||
ff = &T{}
|
ff = &T{}
|
||||||
for _ = range n {
|
for _ = range n {
|
||||||
|
|||||||
Reference in New Issue
Block a user