...
1 package client
2
3 import (
4 "context"
5 "fmt"
6 "time"
7
8 "golang.conradwood.net/go-easyops/auth"
9 "golang.conradwood.net/go-easyops/cmdline"
10 pp "golang.conradwood.net/go-easyops/profiling"
11 "google.golang.org/grpc"
12 )
13
14 func unaryStreamInterceptor(ctx context.Context, desc *grpc.StreamDesc, cc *grpc.ClientConn, method string, streamer grpc.Streamer, opts ...grpc.CallOption) (grpc.ClientStream, error) {
15 pp.ClientRpcEntered()
16 var err error
17 s := "X"
18 m := "Y"
19 if cmdline.IsDebugRPCClient() {
20 s, m, err = splitMethodAndService(method)
21 if err != nil {
22 fmt.Printf("[go-easyops] failed to split method \"%s\": %s\n", method, err)
23 }
24 fmt.Printf("[go-easyops] invoking streaming rpc \"%s/%s\" as user %s\n", s, m, auth.UserIDString(auth.GetUser(ctx)))
25 }
26 started := time.Now()
27 cs, err := streamer(ctx, desc, cc, method, opts...)
28 pp.ClientRpcDone()
29 dur := time.Since(started)
30 if cmdline.IsDebugRPCClient() {
31 if err != nil {
32 fmt.Printf("[go-easyops] streaming rpc \"%s/%s\" failed after %0.2fs with error %s\n", s, m, dur.Seconds(), err)
33 } else {
34 fmt.Printf("[go-easyops] streaming rpc \"%s/%s\" returned after %0.2fs\n", s, m, dur.Seconds())
35 }
36 }
37 return cs, err
38 }
39
View as plain text