mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-05-08 14:13:22 +00:00
Xray-core: Refactor geodata (#5814)
https://github.com/XTLS/Xray-core/issues/4422#issuecomment-3533007890 Breaking changes https://github.com/XTLS/Xray-core/pull/5569 Reverts https://github.com/XTLS/Xray-core/pull/5505 Closes https://github.com/XTLS/Xray-core/pull/643
This commit is contained in:
41
common/geodata/strmatcher/matchergroup_simple.go
Normal file
41
common/geodata/strmatcher/matchergroup_simple.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package strmatcher
|
||||
|
||||
type matcherEntry struct {
|
||||
matcher Matcher
|
||||
value uint32
|
||||
}
|
||||
|
||||
// SimpleMatcherGroup is an implementation of MatcherGroup.
|
||||
// It simply stores all matchers in an array and sequentially matches them.
|
||||
type SimpleMatcherGroup struct {
|
||||
matchers []matcherEntry
|
||||
}
|
||||
|
||||
// AddMatcher implements MatcherGroupForAll.AddMatcher.
|
||||
func (g *SimpleMatcherGroup) AddMatcher(matcher Matcher, value uint32) {
|
||||
g.matchers = append(g.matchers, matcherEntry{
|
||||
matcher: matcher,
|
||||
value: value,
|
||||
})
|
||||
}
|
||||
|
||||
// Match implements MatcherGroup.Match.
|
||||
func (g *SimpleMatcherGroup) Match(input string) []uint32 {
|
||||
result := []uint32{}
|
||||
for _, e := range g.matchers {
|
||||
if e.matcher.Match(input) {
|
||||
result = append(result, e.value)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// MatchAny implements MatcherGroup.MatchAny.
|
||||
func (g *SimpleMatcherGroup) MatchAny(input string) bool {
|
||||
for _, e := range g.matchers {
|
||||
if e.matcher.Match(input) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
Reference in New Issue
Block a user