diff --git a/protocol/dubbo/readwriter.go b/protocol/dubbo/readwriter.go index 6d789ae13e458249747f660c406ab2fe4c6463f0..529aa759a5c39a467a1f72560d56c1b48738a9a6 100644 --- a/protocol/dubbo/readwriter.go +++ b/protocol/dubbo/readwriter.go @@ -24,7 +24,7 @@ import ( import ( "github.com/dubbogo/getty" - "github.com/dubbogo/hessian2" + hessian "github.com/dubbogo/hessian2" perrors "github.com/pkg/errors" ) import ( @@ -89,12 +89,11 @@ func (p *RpcClientPackageHandler) Write(ss getty.Session, pkg interface{}) error // RpcServerPackageHandler //////////////////////////////////////////// -type RpcServerPackageHandler struct { -} +var ( + rpcServerPkgHandler = &RpcServerPackageHandler{} +) -func NewRpcServerPackageHandler() *RpcServerPackageHandler { - return &RpcServerPackageHandler{} -} +type RpcServerPackageHandler struct{} func (p *RpcServerPackageHandler) Read(ss getty.Session, data []byte) (interface{}, int, error) { pkg := &DubboPackage{ diff --git a/protocol/dubbo/server.go b/protocol/dubbo/server.go index 80568c61bb44b540df0d0689273f22d206411ca4..8bed30f7465bbe22e8c61b5ca887da1c668a3ba9 100644 --- a/protocol/dubbo/server.go +++ b/protocol/dubbo/server.go @@ -79,6 +79,8 @@ type Server struct { conf ServerConfig tcpServer getty.Server exporter protocol.Exporter + + rpcHandler *RpcServerHandler } func NewServer(exporter protocol.Exporter) *Server { @@ -88,6 +90,8 @@ func NewServer(exporter protocol.Exporter) *Server { conf: *srvConf, } + s.rpcHandler = NewRpcServerHandler(s.exporter, s.conf.SessionNumber, s.conf.sessionTimeout) + return s } @@ -116,8 +120,8 @@ func (s *Server) newSession(session getty.Session) error { session.SetName(conf.GettySessionParam.SessionName) session.SetMaxMsgLen(conf.GettySessionParam.MaxMsgLen) - session.SetPkgHandler(NewRpcServerPackageHandler()) - session.SetEventListener(NewRpcServerHandler(s.exporter, conf.SessionNumber, conf.sessionTimeout)) + session.SetPkgHandler(rpcServerPkgHandler) + session.SetEventListener(s.rpcHandler) session.SetRQLen(conf.GettySessionParam.PkgRQSize) session.SetWQLen(conf.GettySessionParam.PkgWQSize) session.SetReadTimeout(conf.GettySessionParam.tcpReadTimeout)