summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-01-29 21:39:06 +0200
committerPaul Buetow <paul@buetow.org>2026-01-29 21:39:06 +0200
commit599bdb74efcc97e86ce6023c1ae8265b1c2ff33b (patch)
tree6642a7401de622efc90947586f4db7a3e6ccd75d /internal/server
parenta32f028487c2e0b9e3144cf82d4153d1cd4a5243 (diff)
refactor: improve Go best practices compliance
- Add explicit interface satisfaction checks (var _ Interface = (*Type)(nil)) for compile-time verification: - TurboWriter implementations (DirectTurboWriter, TurboChannelWriter) - Processor implementations (GrepLineProcessor, ChannellessLineProcessor) - Parser implementations (genericParser, csvParser, genericKVParser, custom parsers, mimecastParser) - Logger implementations (file, stdout) - Handler implementations (ServerHandler, ClientHandler) - Connector implementations (Serverless, ServerConnection) - SSH callback implementations (KnownHostsCallback) - Improve error handling with context wrapping (%w): - SSH operations: GeneratePrivateRSAKey, Agent - Query parsing: Query.parse - SSH client connections: dial, session, handle methods - Fix receiver consistency: - Convert Query.String() from value to pointer receiver - Convert Outfile.String() from value to pointer receiver - Convert all KnownHostsCallback methods to pointer receivers - Convert mapCommand.Start() to pointer receiver - Reorganize file structure for better clarity: - internal/io/dlog/dlog.go: Move type definition before public functions - internal/mapr/token.go: Reorganize helper functions after public ones - Add documentation comments: - Query.String() method - Outfile.String() method - Regex.String() method - Improve config variable documentation All unit tests and integration tests pass. Amp-Thread-ID: https://ampcode.com/threads/T-019c0b08-0eeb-705d-a1f7-31bb764b659a Co-authored-by: Amp <amp@ampcode.com>
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/handlers/channelless_adapter.go2
-rw-r--r--internal/server/handlers/lineprocessor.go3
-rw-r--r--internal/server/handlers/mapcommand.go2
-rw-r--r--internal/server/handlers/serverhandler.go2
-rw-r--r--internal/server/handlers/turbo_writer.go4
5 files changed, 12 insertions, 1 deletions
diff --git a/internal/server/handlers/channelless_adapter.go b/internal/server/handlers/channelless_adapter.go
index a950408..40c072f 100644
--- a/internal/server/handlers/channelless_adapter.go
+++ b/internal/server/handlers/channelless_adapter.go
@@ -13,6 +13,8 @@ type ChannellessLineProcessor struct {
lineCount uint64
}
+var _ line.Processor = (*ChannellessLineProcessor)(nil)
+
// NewChannellessLineProcessor creates a processor that sends lines to the existing channel
func NewChannellessLineProcessor(lines chan<- *line.Line, globID string) *ChannellessLineProcessor {
return &ChannellessLineProcessor{
diff --git a/internal/server/handlers/lineprocessor.go b/internal/server/handlers/lineprocessor.go
index f75b85b..9bbf7e1 100644
--- a/internal/server/handlers/lineprocessor.go
+++ b/internal/server/handlers/lineprocessor.go
@@ -6,6 +6,7 @@ import (
"io"
"sync"
+ "github.com/mimecast/dtail/internal/io/line"
"github.com/mimecast/dtail/internal/io/pool"
"github.com/mimecast/dtail/internal/protocol"
)
@@ -28,6 +29,8 @@ type GrepLineProcessor struct {
bytesWritten uint64
}
+var _ line.Processor = (*GrepLineProcessor)(nil)
+
// HandlerWriter adapts a ServerHandler to implement io.Writer
type HandlerWriter struct {
handler *ServerHandler
diff --git a/internal/server/handlers/mapcommand.go b/internal/server/handlers/mapcommand.go
index 83c4c75..a4fda97 100644
--- a/internal/server/handlers/mapcommand.go
+++ b/internal/server/handlers/mapcommand.go
@@ -45,7 +45,7 @@ func newMapCommand(serverHandler *ServerHandler, argc int,
return m, aggregate, nil, nil
}
-func (m mapCommand) Start(ctx context.Context, aggregatedMessages chan<- string) {
+func (m *mapCommand) Start(ctx context.Context, aggregatedMessages chan<- string) {
if m.turboAggregate != nil {
m.turboAggregate.Start(ctx, aggregatedMessages)
} else {
diff --git a/internal/server/handlers/serverhandler.go b/internal/server/handlers/serverhandler.go
index df227ab..645e2e9 100644
--- a/internal/server/handlers/serverhandler.go
+++ b/internal/server/handlers/serverhandler.go
@@ -26,6 +26,8 @@ type ServerHandler struct {
pendingFiles int32
}
+var _ Handler = (*ServerHandler)(nil)
+
// NewServerHandler returns the server handler.
func NewServerHandler(user *user.User, catLimiter,
tailLimiter chan struct{}) *ServerHandler {
diff --git a/internal/server/handlers/turbo_writer.go b/internal/server/handlers/turbo_writer.go
index d8ee2ad..62225bd 100644
--- a/internal/server/handlers/turbo_writer.go
+++ b/internal/server/handlers/turbo_writer.go
@@ -40,6 +40,8 @@ type DirectTurboWriter struct {
bytesWritten uint64
}
+var _ TurboWriter = (*DirectTurboWriter)(nil)
+
// NewDirectTurboWriter creates a new turbo writer
func NewDirectTurboWriter(writer io.Writer, hostname string, plain, serverless bool) *DirectTurboWriter {
return &DirectTurboWriter{
@@ -252,6 +254,8 @@ type TurboChannelWriter struct {
bytesWritten uint64
}
+var _ TurboWriter = (*TurboChannelWriter)(nil)
+
// NewTurboChannelWriter creates a writer that sends to a turbo channel
func NewTurboChannelWriter(channel chan<- []byte, hostname string, plain, serverless bool) *TurboChannelWriter {
return &TurboChannelWriter{