summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/clients/healthclient.go3
-rw-r--r--internal/color/brush/brush.go11
-rw-r--r--internal/io/fs/readfile.go20
-rw-r--r--internal/mapr/logformat/default.go4
-rw-r--r--internal/protocol/protocol.go2
-rw-r--r--internal/server/handlers/serverhandler.go10
6 files changed, 26 insertions, 24 deletions
diff --git a/internal/clients/healthclient.go b/internal/clients/healthclient.go
index e93f6be..692464c 100644
--- a/internal/clients/healthclient.go
+++ b/internal/clients/healthclient.go
@@ -11,6 +11,7 @@ import (
"github.com/mimecast/dtail/internal/clients/remote"
"github.com/mimecast/dtail/internal/config"
"github.com/mimecast/dtail/internal/omode"
+ "github.com/mimecast/dtail/internal/protocol"
gossh "golang.org/x/crypto/ssh"
)
@@ -57,7 +58,7 @@ func (c *HealthClient) Start(ctx context.Context) (status int) {
select {
case data := <-receive:
// Parse recieved data.
- s := strings.Split(data, "|")
+ s := strings.Split(data, protocol.FieldDelimiter)
message := s[len(s)-1]
if strings.HasPrefix(message, "done;") {
return
diff --git a/internal/color/brush/brush.go b/internal/color/brush/brush.go
index c5efff6..87c02d0 100644
--- a/internal/color/brush/brush.go
+++ b/internal/color/brush/brush.go
@@ -6,11 +6,12 @@ import (
"github.com/mimecast/dtail/internal/color"
"github.com/mimecast/dtail/internal/config"
+ "github.com/mimecast/dtail/internal/protocol"
)
// Add some color to log lines received from remote servers.
func paintRemote(line string) string {
- splitted := strings.Split(line, "|")
+ splitted := strings.Split(line, protocol.FieldDelimiter)
if splitted[2] == "100" {
splitted[2] = color.Paint(splitted[2],
config.Client.TermColors.RemoteStatsOkFg,
@@ -21,8 +22,8 @@ func paintRemote(line string) string {
config.Client.TermColors.RemoteStatsWarnBg)
}
- info := strings.Join(splitted[0:5], "|")
- log := strings.Join(splitted[5:], "|")
+ info := strings.Join(splitted[0:5], protocol.FieldDelimiter)
+ log := strings.Join(splitted[5:], protocol.FieldDelimiter)
switch {
case strings.HasPrefix(log, "WARN"):
@@ -67,8 +68,8 @@ func paintRemote(line string) string {
// Add some color to stats generated by the client.
func paintClientStats(line string) string {
- splitted := strings.Split(line, "|")
- first := strings.Join(splitted[0:4], "|")
+ splitted := strings.Split(line, protocol.FieldDelimiter)
+ first := strings.Join(splitted[0:4], protocol.FieldDelimiter)
connected := color.PaintWithAttr(splitted[4],
config.Client.TermColors.ClientStatsFg,
config.Client.TermColors.ClientStatsBg,
diff --git a/internal/io/fs/readfile.go b/internal/io/fs/readfile.go
index e44f30e..f2f672a 100644
--- a/internal/io/fs/readfile.go
+++ b/internal/io/fs/readfile.go
@@ -157,22 +157,21 @@ func (f readFile) read(ctx context.Context, fd *os.File, rawLines chan *bytes.Bu
message := pool.BytesBuffer.Get().(*bytes.Buffer)
for {
- select {
- case <-ctx.Done():
- return nil
- case <-truncate:
- if isTruncated, err := f.truncated(fd); isTruncated {
- return err
- }
- default:
- }
-
b, err := reader.ReadByte()
if err != nil {
if err != io.EOF {
return err
}
+ select {
+ case <-truncate:
+ if isTruncated, err := f.truncated(fd); isTruncated {
+ return err
+ }
+ case <-ctx.Done():
+ return nil
+ default:
+ }
if !f.seekEOF {
logger.Info(f.FilePath(), "End of file reached")
return nil
@@ -207,7 +206,6 @@ func (f readFile) read(ctx context.Context, fd *os.File, rawLines chan *bytes.Bu
select {
case rawLines <- message:
message = pool.BytesBuffer.Get().(*bytes.Buffer)
- //fmt.Printf("%d %d %p\n", message.Len(), message.Cap(), message)
case <-ctx.Done():
return nil
}
diff --git a/internal/mapr/logformat/default.go b/internal/mapr/logformat/default.go
index 44bf558..32a34bd 100644
--- a/internal/mapr/logformat/default.go
+++ b/internal/mapr/logformat/default.go
@@ -3,12 +3,14 @@ package logformat
import (
"errors"
"strings"
+
+ "github.com/mimecast/dtail/internal/protocol"
)
// MakeFieldsDEFAULT is the default log file mapreduce parser.
func (p *Parser) MakeFieldsDEFAULT(maprLine string) (map[string]string, error) {
fields := make(map[string]string, 20)
- splitted := strings.Split(maprLine, "|")
+ splitted := strings.Split(maprLine, protocol.FieldDelimiter)
fields["*"] = "*"
fields["$line"] = maprLine
diff --git a/internal/protocol/protocol.go b/internal/protocol/protocol.go
index 43021a2..d3035e4 100644
--- a/internal/protocol/protocol.go
+++ b/internal/protocol/protocol.go
@@ -6,7 +6,7 @@ const (
// MessageDelimiter delimits separate messages.
MessageDelimiter byte = '¬'
// FieldDelimiter delimits aggregation fields.
- FieldDelimiter byte = '|'
+ FieldDelimiter string = "|"
// AggregateDelimiter delimits parts of an aggregation message.
AggregateDelimiter string = "➔"
)
diff --git a/internal/server/handlers/serverhandler.go b/internal/server/handlers/serverhandler.go
index f5aefa2..14fc5d0 100644
--- a/internal/server/handlers/serverhandler.go
+++ b/internal/server/handlers/serverhandler.go
@@ -120,15 +120,15 @@ func (h *ServerHandler) Read(p []byte) (n int, err error) {
case line := <-h.lines:
buf := pool.BytesBuffer.Get().(*bytes.Buffer)
buf.WriteString("REMOTE")
- buf.WriteByte(protocol.FieldDelimiter)
+ buf.WriteString(protocol.FieldDelimiter)
buf.WriteString(h.hostname)
- buf.WriteByte(protocol.FieldDelimiter)
+ buf.WriteString(protocol.FieldDelimiter)
buf.WriteString(fmt.Sprintf("%3d", line.TransmittedPerc))
- buf.WriteByte(protocol.FieldDelimiter)
+ buf.WriteString(protocol.FieldDelimiter)
buf.WriteString(fmt.Sprintf("%v", line.Count))
- buf.WriteByte(protocol.FieldDelimiter)
+ buf.WriteString(protocol.FieldDelimiter)
buf.WriteString(line.SourceID)
- buf.WriteByte(protocol.FieldDelimiter)
+ buf.WriteString(protocol.FieldDelimiter)
payload := append(buf.Bytes(), line.Content.Bytes()...)
n = copy(p, payload)
pool.RecycleBytesBuffer(buf)