Pull request: querylog: more opt
Updates 1273. Squashed commit of the following: commit 167c0b5acaab8a2676de2cea556c861dc0efbc72 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Mon Apr 12 18:12:43 2021 +0300 querylog: imp naming commit 5010ad113e46335011a721cbcc9fc9b1fc623722 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Mon Apr 12 17:53:41 2021 +0300 querylog: more opt
This commit is contained in:
@@ -171,6 +171,7 @@ func (l *queryLog) searchFiles(
|
||||
for total < params.maxFileScanEntries || params.maxFileScanEntries <= 0 {
|
||||
var e *logEntry
|
||||
var ts int64
|
||||
|
||||
e, ts, err = l.readNextEntry(r, params, cache)
|
||||
if err != nil {
|
||||
if err == io.EOF {
|
||||
@@ -198,6 +199,29 @@ func (l *queryLog) searchFiles(
|
||||
return entries, oldest, total
|
||||
}
|
||||
|
||||
// quickMatchClientFinder is a wrapper around the usual client finding function
|
||||
// to make it easier to use with quick matches.
|
||||
type quickMatchClientFinder struct {
|
||||
client func(clientID, ip string, cache clientCache) (c *Client, err error)
|
||||
cache clientCache
|
||||
}
|
||||
|
||||
// findClient is a method that can be used as a quickMatchClientFinder.
|
||||
func (f quickMatchClientFinder) findClient(clientID, ip string) (c *Client) {
|
||||
var err error
|
||||
c, err = f.client(clientID, ip, f.cache)
|
||||
if err != nil {
|
||||
log.Error("querylog: enriching file record for quick search:"+
|
||||
" for client %q (client id %q): %s",
|
||||
ip,
|
||||
clientID,
|
||||
err,
|
||||
)
|
||||
}
|
||||
|
||||
return c
|
||||
}
|
||||
|
||||
// readNextEntry reads the next log entry and checks if it matches the search
|
||||
// criteria. It optionally uses the client cache, if provided. e is nil if the
|
||||
// entry doesn't match the search criteria. ts is the timestamp of the
|
||||
@@ -213,6 +237,17 @@ func (l *queryLog) readNextEntry(
|
||||
return nil, 0, err
|
||||
}
|
||||
|
||||
clientFinder := quickMatchClientFinder{
|
||||
client: l.client,
|
||||
cache: cache,
|
||||
}
|
||||
|
||||
if !params.quickMatch(line, clientFinder.findClient) {
|
||||
ts = readQLogTimestamp(line)
|
||||
|
||||
return nil, ts, nil
|
||||
}
|
||||
|
||||
e = &logEntry{}
|
||||
decodeLogEntry(e, line)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user