26 lines
632 B
Go
26 lines
632 B
Go
package toolsrv
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"net"
|
|
)
|
|
|
|
// Dial connects to a running tool server at the given Unix socket path.
|
|
// The server must already be running (started via Spawn or SpawnRemote).
|
|
func Dial(ctx context.Context, socket string) (*Conn, error) {
|
|
if socket == "" {
|
|
return nil, fmt.Errorf("toolsrv.Dial: socket path required")
|
|
}
|
|
conn, err := net.Dial("unix", socket)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("toolsrv.Dial: %w", err)
|
|
}
|
|
c := NewConn(conn, func() { conn.Close() })
|
|
if err := c.Ping(); err != nil {
|
|
c.Close()
|
|
return nil, fmt.Errorf("toolsrv.Dial: ping failed: %w", err)
|
|
}
|
|
return c, nil
|
|
}
|