|
- /*
- *
- * Copyright 2018 gRPC authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
- // Binary client is an example client.
- package main
-
- import (
- "context"
- "flag"
- "log"
- "os"
- "time"
-
- epb "google.golang.org/genproto/googleapis/rpc/errdetails"
- "google.golang.org/grpc"
- pb "google.golang.org/grpc/examples/helloworld/helloworld"
- "google.golang.org/grpc/status"
- )
-
- var addr = flag.String("addr", "localhost:50052", "the address to connect to")
-
- func main() {
- flag.Parse()
-
- // Set up a connection to the server.
- conn, err := grpc.Dial(*addr, grpc.WithInsecure())
- if err != nil {
- log.Fatalf("did not connect: %v", err)
- }
- defer func() {
- if e := conn.Close(); e != nil {
- log.Printf("failed to close connection: %s", e)
- }
- }()
- c := pb.NewGreeterClient(conn)
-
- ctx, cancel := context.WithTimeout(context.Background(), time.Second)
- defer cancel()
- r, err := c.SayHello(ctx, &pb.HelloRequest{Name: "world"})
- if err != nil {
- s := status.Convert(err)
- for _, d := range s.Details() {
- switch info := d.(type) {
- case *epb.QuotaFailure:
- log.Printf("Quota failure: %s", info)
- default:
- log.Printf("Unexpected type: %s", info)
- }
- }
- os.Exit(1)
- }
- log.Printf("Greeting: %s", r.Message)
- }
|