This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
The following commit(s) were added to refs/heads/main by this push:
new 7341d507b feat:save old service info (#2556)
7341d507b is described below
commit 7341d507bef2ad65346a37e9b0dfb41fa7036539
Author: finalt <[email protected]>
AuthorDate: Fri Jan 5 10:32:28 2024 +0800
feat:save old service info (#2556)
---
protocol/triple/server.go | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/protocol/triple/server.go b/protocol/triple/server.go
index 7a2dc7d04..70ca805a8 100644
--- a/protocol/triple/server.go
+++ b/protocol/triple/server.go
@@ -27,6 +27,8 @@ import (
import (
"github.com/dubbogo/gost/log/logger"
+ grpc_go "github.com/dubbogo/grpc-go"
+
"github.com/dustin/go-humanize"
"google.golang.org/grpc"
@@ -174,9 +176,10 @@ func (s *Server) compatHandleService(interfaceName string,
group, version string
if !ok {
info := createServiceInfoWithReflection(service)
s.handleServiceWithInfo(interfaceName, invoker, info,
opts...)
+ s.saveServiceInfo(interfaceName, info)
continue
}
-
+ s.compatSaveServiceInfo(ds.XXX_ServiceDesc())
// inject invoker, it has all invocation logics
ds.XXX_SetProxyImpl(invoker)
s.compatRegisterHandler(interfaceName, ds, opts...)
@@ -318,6 +321,31 @@ func (s *Server) saveServiceInfo(interfaceName string,
info *server.ServiceInfo)
s.services[interfaceName] = ret
}
+func (s *Server) compatSaveServiceInfo(desc *grpc_go.ServiceDesc) {
+ ret := grpc.ServiceInfo{}
+ ret.Methods = make([]grpc.MethodInfo, 0,
len(desc.Streams)+len(desc.Methods))
+ for _, method := range desc.Methods {
+ md := grpc.MethodInfo{
+ Name: method.MethodName,
+ IsClientStream: false,
+ IsServerStream: false,
+ }
+ ret.Methods = append(ret.Methods, md)
+ }
+ for _, stream := range desc.Streams {
+ md := grpc.MethodInfo{
+ Name: stream.StreamName,
+ IsClientStream: stream.ClientStreams,
+ IsServerStream: stream.ServerStreams,
+ }
+ ret.Methods = append(ret.Methods, md)
+ }
+ ret.Metadata = desc.Metadata
+ s.mu.Lock()
+ defer s.mu.Unlock()
+ s.services[desc.ServiceName] = ret
+}
+
func (s *Server) GetServiceInfo() map[string]grpc.ServiceInfo {
s.mu.RLock()
defer s.mu.RUnlock()