rpc/triple/stream/go-client/cmd/main.go (100 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. */ package main import ( "context" ) import ( "dubbo.apache.org/dubbo-go/v3/client" _ "dubbo.apache.org/dubbo-go/v3/imports" greet "github.com/apache/dubbo-go-samples/rpc/triple/stream/proto" "github.com/dubbogo/gost/log/logger" ) func main() { cli, err := client.NewClient( client.WithClientURL("127.0.0.1:20000"), ) if err != nil { panic(err) } svc, err := greet.NewGreetService(cli) if err != nil { panic(err) } if err := unary(svc); err != nil { logger.Error(err) } if err := bidiStream(svc); err != nil { logger.Error(err) } if err := clientStream(svc); err != nil { logger.Error(err) } if err := serverStream(svc); err != nil { logger.Error(err) } } func unary(cli greet.GreetService) error { logger.Info("start to test TRIPLE unary call") resp, err := cli.Greet(context.Background(), &greet.GreetRequest{Name: "triple"}) if err != nil { return err } logger.Infof("TRIPLE unary call resp: %s", resp.Greeting) return nil } func bidiStream(cli greet.GreetService) error { logger.Info("start to test TRIPLE bidi stream") stream, err := cli.GreetStream(context.Background()) if err != nil { return err } if sendErr := stream.Send(&greet.GreetStreamRequest{Name: "triple"}); sendErr != nil { return sendErr } resp, err := stream.Recv() if err != nil { return err } logger.Infof("TRIPLE bidi stream resp: %s", resp.Greeting) if err := stream.CloseRequest(); err != nil { return err } if err := stream.CloseResponse(); err != nil { return err } return nil } func clientStream(cli greet.GreetService) error { logger.Info("start to test TRIPLE client stream") stream, err := cli.GreetClientStream(context.Background()) if err != nil { return err } for i := 0; i < 5; i++ { if sendErr := stream.Send(&greet.GreetClientStreamRequest{Name: "triple"}); sendErr != nil { return sendErr } } resp, err := stream.CloseAndRecv() if err != nil { return err } logger.Infof("TRIPLE client stream resp: %s", resp.Greeting) return nil } func serverStream(cli greet.GreetService) error { logger.Info("start to test TRIPLE server stream") stream, err := cli.GreetServerStream(context.Background(), &greet.GreetServerStreamRequest{Name: "triple"}) if err != nil { return err } for stream.Recv() { logger.Infof("TRIPLE server stream resp: %s", stream.Msg().Greeting) } if stream.Err() != nil { return err } if err := stream.Close(); err != nil { return err } return nil }