...
1 package main
2
3 import (
4 "context"
5 "io"
6 "os"
7
8 "github.com/datawire/dlib/dhttp"
9 "github.com/datawire/dlib/dlog"
10 "google.golang.org/grpc"
11 "google.golang.org/protobuf/encoding/protojson"
12
13 v2_metrics "github.com/emissary-ingress/emissary/v3/pkg/api/envoy/service/metrics/v2"
14 )
15
16 type server struct{}
17
18 var _ v2_metrics.MetricsServiceServer = &server{}
19
20 func main() {
21 ctx := context.Background()
22
23 grpcMux := grpc.NewServer()
24 v2_metrics.RegisterMetricsServiceServer(grpcMux, &server{})
25
26 sc := &dhttp.ServerConfig{
27 Handler: grpcMux,
28 }
29
30 dlog.Print(ctx, "starting...")
31
32 if err := sc.ListenAndServe(ctx, ":8080"); err != nil {
33 dlog.Errorf(ctx, "shut down with error: %v", err)
34 os.Exit(1)
35 }
36
37 dlog.Print(ctx, "shut down without error")
38 }
39
40 func (s *server) StreamMetrics(stream v2_metrics.MetricsService_StreamMetricsServer) error {
41 dlog.Println(stream.Context(), "Started stream")
42 for {
43 in, err := stream.Recv()
44
45 if err == io.EOF {
46 return nil
47 }
48
49 if err != nil {
50 return err
51 }
52
53 dlog.Println(stream.Context(), protojson.Format(in))
54 }
55 }
56
View as plain text