diff --git a/common/constant/default.go b/common/constant/default.go index 5871e3cec8ec8dd1c17cb79f002fd9c386d15ecb..66150525357c0e64d5b281604cc720b73caa7e95 100644 --- a/common/constant/default.go +++ b/common/constant/default.go @@ -15,5 +15,5 @@ const ( ) const ( - ECHO = "Echo" + ECHO = "$echo" ) diff --git a/common/proxy/proxy.go b/common/proxy/proxy.go index 5447c5656ea43a11ff80cfb1f5bbb0b043d4d154..d511bc93cf0982cbaa2dfea6d63f26136943ad7b 100644 --- a/common/proxy/proxy.go +++ b/common/proxy/proxy.go @@ -10,7 +10,7 @@ import ( import ( "github.com/dubbo/go-for-apache-dubbo/common" "github.com/dubbo/go-for-apache-dubbo/protocol" - "github.com/dubbo/go-for-apache-dubbo/protocol/invocation" + invocation_impl "github.com/dubbo/go-for-apache-dubbo/protocol/invocation" ) // Proxy struct @@ -53,8 +53,12 @@ func (p *Proxy) Implement(v common.RPCService) { makeDubboCallProxy := func(methodName string, outs []reflect.Type) func(in []reflect.Value) []reflect.Value { return func(in []reflect.Value) []reflect.Value { - log.Info("call method!") - inv := invocation.NewRPCInvocationForConsumer(methodName, nil, in[1].Interface().([]interface{}), in[2].Interface(), p.callBack, common.URL{}, nil) + + if methodName == "Echo" { + methodName = "$echo" + } + inv := invocation_impl.NewRPCInvocationForConsumer(methodName, nil, in[1].Interface().([]interface{}), in[2].Interface(), p.callBack, common.URL{}, nil) + for k, v := range p.attachments { inv.SetAttachments(k, v) } diff --git a/examples/dubbo/go-client/app/client.go b/examples/dubbo/go-client/app/client.go index 42c3557f12c35857d0ddc146fa8756831adef131..ddec042d7b4619db65ce2a6de83a244df24b3e37 100644 --- a/examples/dubbo/go-client/app/client.go +++ b/examples/dubbo/go-client/app/client.go @@ -24,7 +24,7 @@ import ( _ "github.com/dubbo/go-for-apache-dubbo/protocol/dubbo" _ "github.com/dubbo/go-for-apache-dubbo/registry/protocol" - _ "github.com/dubbo/go-for-apache-dubbo/filter/imp" + _ "github.com/dubbo/go-for-apache-dubbo/filter/impl" _ "github.com/dubbo/go-for-apache-dubbo/cluster/cluster_impl" _ "github.com/dubbo/go-for-apache-dubbo/cluster/loadbalance" diff --git a/examples/dubbo/go-server/app/server.go b/examples/dubbo/go-server/app/server.go index e517ac9a92f5119074e3ffb481b227d77d493b56..4b12e51bd8693eb6ea9ebc23ae1c8df1406e7d4f 100644 --- a/examples/dubbo/go-server/app/server.go +++ b/examples/dubbo/go-server/app/server.go @@ -22,7 +22,7 @@ import ( _ "github.com/dubbo/go-for-apache-dubbo/protocol/dubbo" _ "github.com/dubbo/go-for-apache-dubbo/registry/protocol" - _ "github.com/dubbo/go-for-apache-dubbo/filter/imp" + _ "github.com/dubbo/go-for-apache-dubbo/filter/impl" _ "github.com/dubbo/go-for-apache-dubbo/cluster/cluster_impl" _ "github.com/dubbo/go-for-apache-dubbo/cluster/loadbalance" diff --git a/examples/jsonrpc/go-client/app/client.go b/examples/jsonrpc/go-client/app/client.go index a315eef5c0d68a71af4e64f7f580939bae64b79d..cb8ca19239c8cb8166f536802a693563f34c2c47 100644 --- a/examples/jsonrpc/go-client/app/client.go +++ b/examples/jsonrpc/go-client/app/client.go @@ -3,7 +3,6 @@ package main import ( "context" "fmt" - "github.com/dubbo/go-for-apache-dubbo/config" "net/http" _ "net/http/pprof" "os" @@ -20,13 +19,14 @@ import ( ) import ( + "github.com/dubbo/go-for-apache-dubbo/config" _ "github.com/dubbo/go-for-apache-dubbo/protocol/jsonrpc" _ "github.com/dubbo/go-for-apache-dubbo/registry/protocol" - _ "github.com/dubbo/go-for-apache-dubbo/filter/imp" + _ "github.com/dubbo/go-for-apache-dubbo/filter/impl" - _ "github.com/dubbo/go-for-apache-dubbo/cluster/loadbalance" _ "github.com/dubbo/go-for-apache-dubbo/cluster/cluster_impl" + _ "github.com/dubbo/go-for-apache-dubbo/cluster/loadbalance" _ "github.com/dubbo/go-for-apache-dubbo/registry/zookeeper" ) diff --git a/examples/jsonrpc/go-client/app/user.go b/examples/jsonrpc/go-client/app/user.go index a6010939e34a15fd2a8585f0c5da1805c4e66410..5030f81031bfb86b2fa59d7930afd4b18e794a6f 100644 --- a/examples/jsonrpc/go-client/app/user.go +++ b/examples/jsonrpc/go-client/app/user.go @@ -3,11 +3,11 @@ package main import ( "context" "fmt" - "github.com/dubbo/go-for-apache-dubbo/config" ) import ( "github.com/AlexStocks/goext/time" + "github.com/dubbo/go-for-apache-dubbo/config" ) func init() { diff --git a/examples/jsonrpc/go-client/benchmark/benchmark.go b/examples/jsonrpc/go-client/benchmark/benchmark.go index ecf631f32818933231a128d88a9823d8383ec123..22281af491914ac9861a1580630115ee11893fad 100644 --- a/examples/jsonrpc/go-client/benchmark/benchmark.go +++ b/examples/jsonrpc/go-client/benchmark/benchmark.go @@ -20,7 +20,7 @@ import ( _ "github.com/dubbo/go-for-apache-dubbo/protocol/jsonrpc" _ "github.com/dubbo/go-for-apache-dubbo/registry/protocol" - _ "github.com/dubbo/go-for-apache-dubbo/filter/imp" + _ "github.com/dubbo/go-for-apache-dubbo/filter/impl" _ "github.com/dubbo/go-for-apache-dubbo/cluster/loadbalance" _ "github.com/dubbo/go-for-apache-dubbo/cluster/cluster_impl" diff --git a/examples/jsonrpc/go-server/app/server.go b/examples/jsonrpc/go-server/app/server.go index ebaed7426da5e2bc8bb42cd62dc12fb77c0152bf..3d2c45ed98ba8c9de7e8e511c2dfe47fb7188c35 100644 --- a/examples/jsonrpc/go-server/app/server.go +++ b/examples/jsonrpc/go-server/app/server.go @@ -2,7 +2,6 @@ package main import ( "fmt" - "github.com/dubbo/go-for-apache-dubbo/config" "net/http" _ "net/http/pprof" "os" @@ -18,13 +17,14 @@ import ( ) import ( + "github.com/dubbo/go-for-apache-dubbo/config" _ "github.com/dubbo/go-for-apache-dubbo/protocol/jsonrpc" _ "github.com/dubbo/go-for-apache-dubbo/registry/protocol" - _ "github.com/dubbo/go-for-apache-dubbo/filter/imp" + _ "github.com/dubbo/go-for-apache-dubbo/filter/impl" - _ "github.com/dubbo/go-for-apache-dubbo/cluster/loadbalance" _ "github.com/dubbo/go-for-apache-dubbo/cluster/cluster_impl" + _ "github.com/dubbo/go-for-apache-dubbo/cluster/loadbalance" _ "github.com/dubbo/go-for-apache-dubbo/registry/zookeeper" ) diff --git a/examples/jsonrpc/go-server/app/user.go b/examples/jsonrpc/go-server/app/user.go index 5a0b5be99f629b00ae2d064be6a13125d3434913..ee3a2018b9317f3a873faf8bbebb9999721963c5 100644 --- a/examples/jsonrpc/go-server/app/user.go +++ b/examples/jsonrpc/go-server/app/user.go @@ -1,16 +1,15 @@ package main import ( - // "encoding/json" "context" "fmt" - "github.com/dubbo/go-for-apache-dubbo/config" "time" ) import ( "github.com/AlexStocks/goext/log" "github.com/AlexStocks/goext/time" + "github.com/dubbo/go-for-apache-dubbo/config" ) type Gender int diff --git a/filter/imp/echo_filter.go b/filter/impl/echo_filter.go similarity index 98% rename from filter/imp/echo_filter.go rename to filter/impl/echo_filter.go index a8f8546bbb614df1759563db68dd5a2649b48b5d..3608cefd23a9c4412292ee8aadaedbbaa3a0026f 100644 --- a/filter/imp/echo_filter.go +++ b/filter/impl/echo_filter.go @@ -1,4 +1,4 @@ -package imp +package impl import ( log "github.com/AlexStocks/log4go" diff --git a/filter/imp/echo_filter_test.go b/filter/impl/echo_filter_test.go similarity index 98% rename from filter/imp/echo_filter_test.go rename to filter/impl/echo_filter_test.go index 4db247625bdabf2d486dfaeef9b93d6b80a0495b..89259478dfc0de4b772ae60a38860f546a82648a 100644 --- a/filter/imp/echo_filter_test.go +++ b/filter/impl/echo_filter_test.go @@ -1,4 +1,4 @@ -package imp +package impl import ( "testing" diff --git a/go.mod b/go.mod index b7ab0cafd6a1a83c0a6a1c8bbcd5aa97071ae005..0ac34185945bf480df504888c9b65a76529b0ecc 100644 --- a/go.mod +++ b/go.mod @@ -1,18 +1,15 @@ module github.com/dubbo/go-for-apache-dubbo require ( - github.com/AlexStocks/getty v0.0.0-20190513191741-cb811d1c31dd + github.com/AlexStocks/getty v0.0.0-20190513203438-4a52b6874223 github.com/AlexStocks/goext v0.3.2 github.com/AlexStocks/log4go v1.0.2 - github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc // indirect - github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf // indirect - github.com/dubbogo/hessian2 v0.0.0-20190410112310-f093e4436e31 + github.com/dubbogo/hessian2 v0.0.0-20190513195500-efce02944002 github.com/juju/errors v0.0.0-20190207033735-e65537c515d7 github.com/montanaflynn/stats v0.5.0 github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec github.com/stretchr/testify v1.3.0 github.com/tevino/abool v0.0.0-20170917061928-9b9efcf221b5 go.uber.org/atomic v1.3.2 - gopkg.in/alecthomas/kingpin.v2 v2.2.6 // indirect gopkg.in/yaml.v2 v2.2.2 ) diff --git a/go.sum b/go.sum index 3456290d657d9da8312e118150d0bc406559e7a5..46219102e3c2f445853950af42d65eeca5d3dfed 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/AlexStocks/getty v0.0.0-20190513191741-cb811d1c31dd h1:kLcmlBGDmo9S+VSmRnDTUFCq3wvlIh9CMd4zLWqY1+4= -github.com/AlexStocks/getty v0.0.0-20190513191741-cb811d1c31dd/go.mod h1:n25mdqPgFi06sWL6mZTjm1hBIZuKwgXUVXAX+KGB97U= +github.com/AlexStocks/getty v0.0.0-20190513203438-4a52b6874223 h1:3Sk5FwL8QpEHeJewYv4piyhOGOj2MS2Ev4S5tHTVSTo= +github.com/AlexStocks/getty v0.0.0-20190513203438-4a52b6874223/go.mod h1:n25mdqPgFi06sWL6mZTjm1hBIZuKwgXUVXAX+KGB97U= github.com/AlexStocks/goext v0.3.2 h1:Bn4C+R6/E5Yjk2Uc/voawtbGv91x9aCid92xwYL2AS0= github.com/AlexStocks/goext v0.3.2 h1:Bn4C+R6/E5Yjk2Uc/voawtbGv91x9aCid92xwYL2AS0= github.com/AlexStocks/goext v0.3.2/go.mod h1:3M5j9Pjge4CdkNg2WIjRLUeoPedJHHKwkkglDGSl3Hc= @@ -8,10 +8,6 @@ github.com/AlexStocks/goext v0.3.2/go.mod h1:3M5j9Pjge4CdkNg2WIjRLUeoPedJHHKwkkg github.com/AlexStocks/log4go v1.0.2 h1:1K5WM8KjSUECaoXUl8FSF05KGeCJDfBrhKUBsxwUvhk= github.com/AlexStocks/log4go v1.0.2/go.mod h1:6kCCRo/orDo8mh5CEDOeuSSM674wBQ8M6E0K8dVOIz4= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U= @@ -28,8 +24,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dubbogo/hessian2 v0.0.0-20190410112310-f093e4436e31 h1:qgwFcVu63dt6cKbMICPQN3NKo6m9fC/6FdJbffnmXOU= -github.com/dubbogo/hessian2 v0.0.0-20190410112310-f093e4436e31/go.mod h1:v+gfInE8fm/k3Fjkb2oUCKSO9LKbWvf+PtweEI89BmI= +github.com/dubbogo/hessian2 v0.0.0-20190513195500-efce02944002 h1:qtXH4fHzFh1ezGWIdVrfIYxbaCUqbDpUwu2xIjnkw6I= +github.com/dubbogo/hessian2 v0.0.0-20190513195500-efce02944002/go.mod h1:v+gfInE8fm/k3Fjkb2oUCKSO9LKbWvf+PtweEI89BmI= github.com/fatih/set v0.2.1/go.mod h1:+RKtMCH+favT2+3YecHGxcc0b4KyVWA1QWWJUs4E0CI= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -160,8 +156,6 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/protocol/dubbo/client.go b/protocol/dubbo/client.go index 5ffa5aedc4e6ab962f93ee0d7d1db340328133b0..c094ea6a105bf89713bb016347dbbf8f0d54543c 100644 --- a/protocol/dubbo/client.go +++ b/protocol/dubbo/client.go @@ -278,10 +278,10 @@ func (c *Client) transfer(session getty.Session, pkg *DubboPackage, if pkg == nil { pkg = &DubboPackage{} pkg.Body = []interface{}{} - pkg.Header.Type = hessian.Heartbeat + pkg.Header.Type = hessian.PackageHeartbeat pkg.Header.SerialID = byte(S_Dubbo) } else { - pkg.Header.Type = hessian.Request + pkg.Header.Type = hessian.PackageRequest } pkg.Header.ID = int64(sequence) diff --git a/protocol/dubbo/codec.go b/protocol/dubbo/codec.go index 43bdb3b08fec0d9d4f1674e4ea573fa159348b8a..ab7e95eb73529f6280eeb20c29396a483ef984a2 100644 --- a/protocol/dubbo/codec.go +++ b/protocol/dubbo/codec.go @@ -78,7 +78,7 @@ func (p *DubboPackage) Unmarshal(buf *bytes.Buffer, opts ...interface{}) error { } } - if p.Header.Type&hessian.Heartbeat != 0x00 { + if p.Header.Type&hessian.PackageHeartbeat != 0x00 { return nil } diff --git a/protocol/dubbo/listener.go b/protocol/dubbo/listener.go index 8620cd40ccfe6877b303a6795f737f7807dc477a..99a11feebd6861c4fd13d8721fcc094118fe45fd 100644 --- a/protocol/dubbo/listener.go +++ b/protocol/dubbo/listener.go @@ -2,6 +2,7 @@ package dubbo import ( "context" + "errors" "reflect" "sync" "time" @@ -67,7 +68,7 @@ func (h *RpcClientHandler) OnMessage(session getty.Session, pkg interface{}) { return } - if p.Header.Type&hessian.Heartbeat != 0x00 { + if p.Header.Type&hessian.PackageHeartbeat != 0x00 { log.Debug("get rpc heartbeat response{header: %#v, body: %#v}", p.Header, p.Body) return } @@ -176,15 +177,15 @@ func (h *RpcServerHandler) OnMessage(session getty.Session, pkg interface{}) { p.Header.ResponseStatus = hessian.Response_OK // heartbeat - if p.Header.Type&hessian.Heartbeat != 0x00 { + if p.Header.Type&hessian.PackageHeartbeat != 0x00 { log.Debug("get rpc heartbeat request{header: %#v, service: %#v, body: %#v}", p.Header, p.Service, p.Body) - h.reply(session, p, hessian.Heartbeat) + h.reply(session, p, hessian.PackageHeartbeat) return } // not twoway - if p.Header.Type&hessian.Request_TwoWay == 0x00 { - h.reply(session, p, hessian.Response) + if p.Header.Type&hessian.PackageRequest_TwoWay == 0x00 { + h.reply(session, p, hessian.PackageResponse) h.callService(p, nil) return } @@ -200,19 +201,19 @@ func (h *RpcServerHandler) OnMessage(session getty.Session, pkg interface{}) { if err := result.Error(); err != nil { p.Header.ResponseStatus = hessian.Response_SERVER_ERROR p.Body = err - h.reply(session, p, hessian.Response) + h.reply(session, p, hessian.PackageResponse) return } if res := result.Result(); res != nil { p.Header.ResponseStatus = hessian.Response_OK p.Body = res - h.reply(session, p, hessian.Response) + h.reply(session, p, hessian.PackageResponse) return } } h.callService(p, nil) - h.reply(session, p, hessian.Response) + h.reply(session, p, hessian.PackageResponse) } func (h *RpcServerHandler) OnCron(session getty.Session) { @@ -262,7 +263,7 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { if svcIf == nil { log.Error("service not found!") req.Header.ResponseStatus = hessian.Response_SERVICE_NOT_FOUND - req.Body = nil + req.Body = errors.New("service not found") return } svc := svcIf.(*common.Service) @@ -270,7 +271,7 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { if method == nil { log.Error("method not found!") req.Header.ResponseStatus = hessian.Response_SERVICE_NOT_FOUND - req.Body = nil + req.Body = errors.New("method not found") return } @@ -311,7 +312,7 @@ func (h *RpcServerHandler) callService(req *DubboPackage, ctx context.Context) { } } -func (h *RpcServerHandler) reply(session getty.Session, req *DubboPackage, tp hessian.PackgeType) { +func (h *RpcServerHandler) reply(session getty.Session, req *DubboPackage, tp hessian.PackageType) { resp := &DubboPackage{ Header: hessian.DubboHeader{ SerialID: req.Header.SerialID, @@ -321,7 +322,7 @@ func (h *RpcServerHandler) reply(session getty.Session, req *DubboPackage, tp he }, } - if req.Header.Type&hessian.Request != 0x00 { + if req.Header.Type&hessian.PackageRequest != 0x00 { resp.Body = req.Body } else { resp.Body = nil diff --git a/protocol/protocolwrapper/protocol_filter_wrapper.go b/protocol/protocolwrapper/protocol_filter_wrapper.go index 1d27b55d391d5535576cfcb468143e113e60ccf0..83097d9ea7cc19a246ab7f0763b0358c819e85a0 100644 --- a/protocol/protocolwrapper/protocol_filter_wrapper.go +++ b/protocol/protocolwrapper/protocol_filter_wrapper.go @@ -9,7 +9,7 @@ import ( "github.com/dubbo/go-for-apache-dubbo/common/constant" "github.com/dubbo/go-for-apache-dubbo/common/extension" "github.com/dubbo/go-for-apache-dubbo/filter" - "github.com/dubbo/go-for-apache-dubbo/filter/imp" + "github.com/dubbo/go-for-apache-dubbo/filter/impl" "github.com/dubbo/go-for-apache-dubbo/protocol" ) @@ -49,7 +49,7 @@ func buildInvokerChain(invoker protocol.Invoker, key string) protocol.Invoker { filtName = filtName + "," } if key == constant.SERVICE_FILTER_KEY { // echofilter must be the first in provider - filtName = imp.ECHO + "," + filtName + filtName = impl.ECHO + "," + filtName } filtNames := strings.Split(filtName, ",") next := invoker