Skip to content
This repository has been archived by the owner on May 21, 2024. It is now read-only.

add option to octect counting parser to set message buffer to be bigg… #39

Merged
merged 1 commit into from
Oct 6, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion makefile
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ snake2camel:
}' $(file)

.PHONY: bench
bench: rfc5424/*_test.go rfc5424/machine.go
bench: rfc5424/*_test.go rfc5424/machine.go octetcounting/performance_test.go
go test -bench=. -benchmem -benchtime=5s ./...

.PHONY: tests
Expand Down
3 changes: 3 additions & 0 deletions nontransparent/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,9 @@ func NewParser(options ...syslog.ParserOption) syslog.Parser {
return m
}

// WithMaxMessageLength does nothing for this parser
func (m *machine) WithMaxMessageLength(length int) {}

// HasBestEffort tells whether the receiving parser has best effort mode on or off.
func (m *machine) HasBestEffort() bool {
return m.bestEffort
Expand Down
24 changes: 15 additions & 9 deletions octetcounting/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,21 @@ import (
//
// Use NewParser function to instantiate one.
type parser struct {
msglen int64
s Scanner
internal syslog.Machine
last Token
stepback bool // Wheter to retrieve the last token or not
bestEffort bool // Best effort mode flag
emit syslog.ParserListener
msglen int64
maxMessageLength int
s Scanner
internal syslog.Machine
last Token
stepback bool // Wheter to retrieve the last token or not
bestEffort bool // Best effort mode flag
emit syslog.ParserListener
}

// NewParser returns a syslog.Parser suitable to parse syslog messages sent with transparent - ie. octet counting (RFC 5425) - framing.
func NewParser(opts ...syslog.ParserOption) syslog.Parser {
p := &parser{
emit: func(*syslog.Result) { /* noop */ },
emit: func(*syslog.Result) { /* noop */ },
maxMessageLength: 8192, // size as per RFC5425#section-4.3.1
}

for _, opt := range opts {
Expand All @@ -41,6 +43,10 @@ func NewParser(opts ...syslog.ParserOption) syslog.Parser {
return p
}

func (p *parser) WithMaxMessageLength(length int) {
p.maxMessageLength = length
}

// HasBestEffort tells whether the receiving parser has best effort mode on or off.
func (p *parser) HasBestEffort() bool {
return p.bestEffort
Expand All @@ -64,7 +70,7 @@ func (p *parser) WithListener(f syslog.ParserListener) {
//
// It stops parsing when an error regarding RFC 5425 is found.
func (p *parser) Parse(r io.Reader) {
p.s = *NewScanner(r)
p.s = *NewScanner(r, p.maxMessageLength)
p.run()
}

Expand Down
Loading