Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
lima-vm
GitHub Repository: lima-vm/lima
Path: blob/master/pkg/driver/external/client/client.go
2611 views
1
// SPDX-FileCopyrightText: Copyright The Lima Authors
2
// SPDX-License-Identifier: Apache-2.0
3
4
package client
5
6
import (
7
"context"
8
"net"
9
10
"github.com/sirupsen/logrus"
11
"google.golang.org/grpc"
12
"google.golang.org/grpc/credentials/insecure"
13
14
pb "github.com/lima-vm/lima/v2/pkg/driver/external"
15
)
16
17
type DriverClient struct {
18
socketPath string
19
Conn *grpc.ClientConn
20
DriverSvc pb.DriverClient
21
logger *logrus.Logger
22
}
23
24
func NewDriverClient(socketPath string, logger *logrus.Logger) (*DriverClient, error) {
25
opts := []grpc.DialOption{
26
grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(16 << 20)),
27
grpc.WithDefaultCallOptions(grpc.MaxCallSendMsgSize(16 << 20)),
28
grpc.WithContextDialer(func(ctx context.Context, _ string) (net.Conn, error) {
29
var dialer net.Dialer
30
return dialer.DialContext(ctx, "unix", socketPath)
31
}),
32
grpc.WithTransportCredentials(insecure.NewCredentials()),
33
}
34
35
//nolint:staticcheck // grpc.Dial is used for compatibility reasons
36
conn, err := grpc.Dial("unix://"+socketPath, opts...)
37
if err != nil {
38
logger.Errorf("failed to dial gRPC driver client connection: %v", err)
39
return nil, err
40
}
41
42
driverSvc := pb.NewDriverClient(conn)
43
44
return &DriverClient{
45
socketPath: socketPath,
46
Conn: conn,
47
DriverSvc: driverSvc,
48
logger: logger,
49
}, nil
50
}
51
52