MCPcopy Index your code
hub / github.com/coder/coder / NewServer

Function NewServer

agent/agentsocket/server.go:36–89  ·  view source on GitHub ↗

NewServer creates a new agent socket server.

(logger slog.Logger, opts ...Option)

Source from the content-addressed store, hash-verified

34
35// NewServer creates a new agent socket server.
36func NewServer(logger slog.Logger, opts ...Option) (*Server, error) {
37 options := &options{}
38 for _, opt := range opts {
39 opt(options)
40 }
41
42 logger = logger.Named("agentsocket-server")
43 server := &Server{
44 logger: logger,
45 path: options.path,
46 service: &DRPCAgentSocketService{
47 logger: logger,
48 unitManager: unit.NewManager(),
49 },
50 }
51
52 mux := drpcmux.New()
53 err := proto.DRPCRegisterAgentSocket(mux, server.service)
54 if err != nil {
55 return nil, xerrors.Errorf("failed to register drpc service: %w", err)
56 }
57
58 server.drpcServer = drpcserver.NewWithOptions(mux, drpcserver.Options{
59 Manager: drpcsdk.DefaultDRPCOptions(nil),
60 Log: func(err error) {
61 if errors.Is(err, context.Canceled) ||
62 errors.Is(err, context.DeadlineExceeded) {
63 return
64 }
65 logger.Debug(context.Background(), "drpc server error", slog.Error(err))
66 },
67 })
68
69 listener, err := createSocket(server.path)
70 if err != nil {
71 return nil, xerrors.Errorf("create socket: %w", err)
72 }
73
74 server.listener = listener
75
76 // This context is canceled by server.Close().
77 // canceling it will close all connections.
78 server.ctx, server.cancel = context.WithCancel(context.Background())
79
80 server.logger.Info(server.ctx, "agent socket server started", slog.F("path", server.path))
81
82 server.wg.Add(1)
83 go func() {
84 defer server.wg.Done()
85 server.acceptConnections()
86 }()
87
88 return server, nil
89}
90
91// Close stops the server and cleans up resources.
92func (s *Server) Close() error {

Callers 4

setupSocketServerFunction · 0.92
initSocketServerMethod · 0.92
TestServerFunction · 0.92

Calls 12

acceptConnectionsMethod · 0.95
NewManagerFunction · 0.92
DefaultDRPCOptionsFunction · 0.92
NamedMethod · 0.80
createSocketFunction · 0.70
NewMethod · 0.65
AddMethod · 0.65
ErrorfMethod · 0.45
IsMethod · 0.45
ErrorMethod · 0.45
InfoMethod · 0.45
DoneMethod · 0.45

Tested by 3

setupSocketServerFunction · 0.74
TestServerFunction · 0.74