git-subtree-dir: third_party/flatbuffers git-subtree-split: 595bf0007ab1929570c7671f091313c8fc20644e
79 lines
2.0 KiB
Go
79 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"flag"
|
|
"fmt"
|
|
"io"
|
|
"log"
|
|
"time"
|
|
|
|
flatbuffers "github.com/google/flatbuffers/go"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/credentials/insecure"
|
|
|
|
models "github.com/google/flatbuffers/grpc/examples/go/greeter/models"
|
|
)
|
|
|
|
var (
|
|
addr = "3000"
|
|
name = flag.String("name", "Flatbuffers", "name to be sent to server :D")
|
|
)
|
|
|
|
func printSayHello(client models.GreeterClient, name string) {
|
|
log.Printf("Name to be sent (%s)", name)
|
|
b := flatbuffers.NewBuilder(0)
|
|
i := b.CreateString(name)
|
|
models.HelloRequestStart(b)
|
|
models.HelloRequestAddName(b, i)
|
|
b.Finish(models.HelloRequestEnd(b))
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
defer cancel()
|
|
request, err := client.SayHello(ctx, b, grpc.CallContentSubtype("flatbuffers"))
|
|
if err != nil {
|
|
log.Fatalf("%v.SayHello(_) = _, %v: ", client, err)
|
|
}
|
|
log.Printf("server said %q", request.Message())
|
|
}
|
|
|
|
func printSayManyHello(client models.GreeterClient, name string) {
|
|
log.Printf("Name to be sent (%s)", name)
|
|
b := flatbuffers.NewBuilder(0)
|
|
i := b.CreateString(name)
|
|
models.HelloRequestStart(b)
|
|
models.HelloRequestAddName(b, i)
|
|
b.Finish(models.HelloRequestEnd(b))
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
defer cancel()
|
|
stream, err := client.SayManyHellos(ctx, b, grpc.CallContentSubtype("flatbuffers"))
|
|
if err != nil {
|
|
log.Fatalf("%v.SayManyHellos(_) = _, %v", client, err)
|
|
}
|
|
for {
|
|
request, err := stream.Recv()
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if err != nil {
|
|
log.Fatalf("%v.SayManyHellos(_) = _, %v", client, err)
|
|
}
|
|
log.Printf("server said %q", request.Message())
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
conn, err := grpc.Dial(fmt.Sprintf("localhost:%d", 3000),
|
|
grpc.WithTransportCredentials(insecure.NewCredentials()),
|
|
grpc.WithDefaultCallOptions(grpc.ForceCodec(flatbuffers.FlatbuffersCodec{})))
|
|
if err != nil {
|
|
log.Fatalf("fail to dial: %v", err)
|
|
}
|
|
defer conn.Close()
|
|
client := models.NewGreeterClient(conn)
|
|
printSayHello(client, *name)
|
|
printSayManyHello(client, *name)
|
|
}
|