NewUserAgentParser 获取新解析器
()
| 29 | |
| 30 | // NewUserAgentParser 获取新解析器 |
| 31 | func NewUserAgentParser() *UserAgentParser { |
| 32 | var parser = &UserAgentParser{ |
| 33 | pool: &sync.Pool{ |
| 34 | New: func() any { |
| 35 | return &useragent.UserAgent{} |
| 36 | }, |
| 37 | }, |
| 38 | cacheMaps: [userAgentShardingCount]map[uint64]UserAgentParserResult{}, |
| 39 | mu: syncutils.NewRWMutex(userAgentShardingCount), |
| 40 | } |
| 41 | |
| 42 | for i := 0; i < userAgentShardingCount; i++ { |
| 43 | parser.cacheMaps[i] = map[uint64]UserAgentParserResult{} |
| 44 | } |
| 45 | |
| 46 | parser.init() |
| 47 | return parser |
| 48 | } |
| 49 | |
| 50 | // 初始化 |
| 51 | func (this *UserAgentParser) init() { |