Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package strmatcher
 
// FullMatcherGroup is an implementation of MatcherGroup.
// It uses a hash table to facilitate exact match lookup.
type FullMatcherGroup struct {
    matchers map[string][]uint32
}
 
// AddFullMatcher implements MatcherGroupForFull.AddFullMatcher.
func (g *FullMatcherGroup) AddFullMatcher(matcher FullMatcher, value uint32) {
    if g.matchers == nil {
        g.matchers = make(map[string][]uint32)
    }
 
    domain := matcher.Pattern()
    g.matchers[domain] = append(g.matchers[domain], value)
}
 
// Match implements MatcherGroup.Match.
func (g *FullMatcherGroup) Match(input string) []uint32 {
    if g.matchers == nil {
        return nil
    }
    return g.matchers[input]
}
 
// MatchAny implements MatcherGroup.Any.
func (g *FullMatcherGroup) MatchAny(input string) bool {
    return len(g.Match(input)) > 0
}