dubbo.apache.org/dubbo-go/v3@v3.1.1/protocol/dubbo3/common_test.go (about) 1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package dubbo3 19 20 import ( 21 "context" 22 "fmt" 23 ) 24 25 import ( 26 native_grpc "github.com/dubbogo/grpc-go" 27 ) 28 29 import ( 30 "dubbo.apache.org/dubbo-go/v3/config" 31 "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3/internal" 32 "dubbo.apache.org/dubbo-go/v3/protocol/invocation" 33 ) 34 35 // userd dubbo3 biz service 36 func addService() { 37 config.SetProviderService(newGreeterProvider()) 38 } 39 40 type greeterProvider struct { 41 internal.UnimplementedGreeterServer 42 } 43 44 func newGreeterProvider() *greeterProvider { 45 return &greeterProvider{} 46 } 47 48 func (g *greeterProvider) SayHello(ctx context.Context, req *internal.HelloRequest) (reply *internal.HelloReply, err error) { 49 fmt.Printf("req: %v", req) 50 return &internal.HelloReply{Message: "this is message from reply"}, nil 51 } 52 53 func dubboGreeterSayHelloHandler(srv interface{}, ctx context.Context, 54 dec func(interface{}) error, interceptor native_grpc.UnaryServerInterceptor) (interface{}, error) { 55 56 in := new(internal.HelloRequest) 57 if err := dec(in); err != nil { 58 return nil, err 59 } 60 base := srv.(Dubbo3GrpcService) 61 62 args := []interface{}{} 63 args = append(args, in) 64 invo := invocation.NewRPCInvocation("SayHello", args, nil) 65 66 if interceptor == nil { 67 result := base.XXX_GetProxyImpl().Invoke(context.Background(), invo) 68 return result.Result(), result.Error() 69 } 70 info := &native_grpc.UnaryServerInfo{ 71 Server: srv, 72 FullMethod: "/helloworld.Greeter/SayHello", 73 } 74 handler := func(context.Context, interface{}) (interface{}, error) { 75 result := base.XXX_GetProxyImpl().Invoke(context.Background(), invo) 76 return result.Result(), result.Error() 77 } 78 return interceptor(ctx, in, info, handler) 79 }