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
31
32
33
34
35
36
37
|
package logformat
import "github.com/mimecast/dtail/internal/protocol"
type genericKVParser struct {
defaultParser
}
var _ Parser = (*genericKVParser)(nil)
func newGenericKVParser(hostname, timeZoneName string, timeZoneOffset int) (*genericKVParser, error) {
defaultParser, err := newDefaultParser(hostname, timeZoneName, timeZoneOffset)
if err != nil {
return &genericKVParser{}, err
}
return &genericKVParser{defaultParser: *defaultParser}, nil
}
func (p *genericKVParser) MakeFields(maprLine string) (map[string]string, error) {
fields := make(map[string]string, p.fieldsCapacity)
p.addDefaultFields(fields, maprLine)
start := 0
delimiter := protocol.FieldDelimiter[0]
for {
token, next, done := scanDelimitedField(maprLine, start, delimiter)
if err := p.addKeyValueField(fields, token); err != nil {
continue
}
if done {
break
}
start = next
}
return fields, nil
}
|