diff --git a/internal/conn/conn.go b/internal/conn/conn.go index 0bf3ae6..6df7e49 100644 --- a/internal/conn/conn.go +++ b/internal/conn/conn.go @@ -7,6 +7,7 @@ import ( "time" ) +// Conn is a wrapper around net.Conn with convenience helpers. type Conn struct { netConn net.Conn } @@ -14,6 +15,7 @@ type Conn struct { // FromNetConn wraps an existing net.Conn. Useful for tests. func FromNetConn(n net.Conn) *Conn { return &Conn{netConn: n} } +// Dial opens a TCP connection to addr using the given timeout. func Dial(ctx context.Context, addr string, timeout time.Duration) (*Conn, error) { d := net.Dialer{Timeout: timeout} c, err := d.DialContext(ctx, "tcp", addr) @@ -23,6 +25,7 @@ func Dial(ctx context.Context, addr string, timeout time.Duration) (*Conn, error return &Conn{netConn: c}, nil } +// Close closes the underlying network connection. func (c *Conn) Close() error { if c.netConn == nil { return nil @@ -30,6 +33,7 @@ func (c *Conn) Close() error { return c.netConn.Close() } +// Send writes data to the connection with the provided timeout. func (c *Conn) Send(ctx context.Context, data []byte, timeout time.Duration) error { if dl, ok := ctx.Deadline(); ok { if err := c.netConn.SetWriteDeadline(dl); err != nil { @@ -44,6 +48,7 @@ func (c *Conn) Send(ctx context.Context, data []byte, timeout time.Duration) err return err } +// Receive reads all data from the connection with the provided timeout. func (c *Conn) Receive(ctx context.Context, timeout time.Duration) ([]byte, error) { if dl, ok := ctx.Deadline(); ok { if err := c.netConn.SetReadDeadline(dl); err != nil { diff --git a/internal/conn/doc.go b/internal/conn/doc.go new file mode 100644 index 0000000..4d64b4b --- /dev/null +++ b/internal/conn/doc.go @@ -0,0 +1,2 @@ +// Package conn wraps net.Conn with simple timeout helpers. +package conn diff --git a/internal/proto/doc.go b/internal/proto/doc.go new file mode 100644 index 0000000..37b4442 --- /dev/null +++ b/internal/proto/doc.go @@ -0,0 +1,2 @@ +// Package proto provides helpers for encoding requests and decoding responses. +package proto diff --git a/mt4/doc.go b/mt4/doc.go new file mode 100644 index 0000000..73a985c --- /dev/null +++ b/mt4/doc.go @@ -0,0 +1,5 @@ +// Package mt4 provides a lightweight client for MetaTrader 4 servers. +// +// It establishes a TCP connection, sends commands, and returns the decoded +// server response. +package mt4