diff --git a/internal/server/config.go b/internal/server/config.go new file mode 100644 index 0000000..3047106 --- /dev/null +++ b/internal/server/config.go @@ -0,0 +1,31 @@ +package server + +import "time" + +// Config holds configuration for the TCP server +type Config struct { + Address string + Timeouts TimeoutConfig +} + +// TimeoutConfig holds timeout configuration +type TimeoutConfig struct { + // Read timeout protects against slowloris attacks (clients sending data slowly) + Read time.Duration + // Write timeout protects against slow readers (clients reading responses slowly) + Write time.Duration + // Connection timeout is the maximum total connection lifetime + Connection time.Duration +} + +// DefaultConfig returns default server configuration +func DefaultConfig() *Config { + return &Config{ + Address: ":8080", + Timeouts: TimeoutConfig{ + Read: 5 * time.Second, + Write: 5 * time.Second, + Connection: 15 * time.Second, + }, + } +}