blob: a7649126b63db86c58c9a39f38f5e0c8b8c9f3c4 [file] [log] [blame]
James Kuszmaul8e62b022022-03-22 09:33:25 -07001package main
2
3import (
4 "context"
5 "flag"
6 "fmt"
7 "io"
8 "log"
9 "time"
10
11 flatbuffers "github.com/google/flatbuffers/go"
James Kuszmaul8e62b022022-03-22 09:33:25 -070012 "google.golang.org/grpc"
Austin Schuh2dd86a92022-09-14 21:19:23 -070013 "google.golang.org/grpc/credentials/insecure"
14
15 models "github.com/google/flatbuffers/grpc/examples/go/greeter/models"
James Kuszmaul8e62b022022-03-22 09:33:25 -070016)
17
18var (
19 addr = "3000"
20 name = flag.String("name", "Flatbuffers", "name to be sent to server :D")
21)
22
23func printSayHello(client models.GreeterClient, name string) {
24 log.Printf("Name to be sent (%s)", name)
25 b := flatbuffers.NewBuilder(0)
26 i := b.CreateString(name)
27 models.HelloRequestStart(b)
28 models.HelloRequestAddName(b, i)
29 b.Finish(models.HelloRequestEnd(b))
30
31 ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
32 defer cancel()
33 request, err := client.SayHello(ctx, b, grpc.CallContentSubtype("flatbuffers"))
34 if err != nil {
35 log.Fatalf("%v.SayHello(_) = _, %v: ", client, err)
36 }
37 log.Printf("server said %q", request.Message())
38}
39
40func printSayManyHello(client models.GreeterClient, name string) {
41 log.Printf("Name to be sent (%s)", name)
42 b := flatbuffers.NewBuilder(0)
43 i := b.CreateString(name)
44 models.HelloRequestStart(b)
45 models.HelloRequestAddName(b, i)
46 b.Finish(models.HelloRequestEnd(b))
47
48 ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
49 defer cancel()
50 stream, err := client.SayManyHellos(ctx, b, grpc.CallContentSubtype("flatbuffers"))
51 if err != nil {
52 log.Fatalf("%v.SayManyHellos(_) = _, %v", client, err)
53 }
54 for {
55 request, err := stream.Recv()
56 if err == io.EOF {
57 break
58 }
59 if err != nil {
60 log.Fatalf("%v.SayManyHellos(_) = _, %v", client, err)
61 }
62 log.Printf("server said %q", request.Message())
63 }
64}
65
66func main() {
67 flag.Parse()
Austin Schuh2dd86a92022-09-14 21:19:23 -070068 conn, err := grpc.Dial(fmt.Sprintf("localhost:%d", 3000),
69 grpc.WithTransportCredentials(insecure.NewCredentials()),
70 grpc.WithDefaultCallOptions(grpc.ForceCodec(flatbuffers.FlatbuffersCodec{})))
James Kuszmaul8e62b022022-03-22 09:33:25 -070071 if err != nil {
72 log.Fatalf("fail to dial: %v", err)
73 }
74 defer conn.Close()
75 client := models.NewGreeterClient(conn)
76 printSayHello(client, *name)
77 printSayManyHello(client, *name)
78}