From d179c971af13b5c9b810db7905a0deae78222c9b Mon Sep 17 00:00:00 2001 From: Asim Aslam Date: Mon, 7 Jan 2019 13:48:38 +0000 Subject: [PATCH] Switch default codec and add default codec for server --- client/options.go | 2 +- client/rpc_client.go | 2 +- client/rpc_codec.go | 7 ++++--- server/rpc_codec.go | 7 +++++-- server/rpc_server.go | 9 +++++++-- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/client/options.go b/client/options.go index 8b924038..aa65381e 100644 --- a/client/options.go +++ b/client/options.go @@ -99,7 +99,7 @@ func newOptions(options ...Option) Options { } if len(opts.ContentType) == 0 { - opts.ContentType = defaultContentType + opts.ContentType = DefaultContentType } if opts.Broker == nil { diff --git a/client/rpc_client.go b/client/rpc_client.go index 2b84d5dd..f229b495 100644 --- a/client/rpc_client.go +++ b/client/rpc_client.go @@ -49,7 +49,7 @@ func (r *rpcClient) newCodec(contentType string) (codec.NewCodec, error) { if c, ok := r.opts.Codecs[contentType]; ok { return c, nil } - if cf, ok := defaultCodecs[contentType]; ok { + if cf, ok := DefaultCodecs[contentType]; ok { return cf, nil } return nil, fmt.Errorf("Unsupported Content-Type: %s", contentType) diff --git a/client/rpc_codec.go b/client/rpc_codec.go index 1a341a7c..310548a4 100644 --- a/client/rpc_codec.go +++ b/client/rpc_codec.go @@ -7,6 +7,7 @@ import ( "strconv" "github.com/micro/go-micro/codec" + raw "github.com/micro/go-micro/codec/bytes" "github.com/micro/go-micro/codec/json" "github.com/micro/go-micro/codec/jsonrpc" "github.com/micro/go-micro/codec/proto" @@ -66,14 +67,14 @@ type response struct { } var ( - defaultContentType = "application/octet-stream" + DefaultContentType = "application/protobuf" - defaultCodecs = map[string]codec.NewCodec{ + DefaultCodecs = map[string]codec.NewCodec{ "application/protobuf": proto.NewCodec, "application/json": json.NewCodec, "application/json-rpc": jsonrpc.NewCodec, "application/proto-rpc": protorpc.NewCodec, - "application/octet-stream": protorpc.NewCodec, + "application/octet-stream": raw.NewCodec, } ) diff --git a/server/rpc_codec.go b/server/rpc_codec.go index 6afc4e4b..4543b0b5 100644 --- a/server/rpc_codec.go +++ b/server/rpc_codec.go @@ -6,6 +6,7 @@ import ( "strconv" "github.com/micro/go-micro/codec" + raw "github.com/micro/go-micro/codec/bytes" "github.com/micro/go-micro/codec/grpc" "github.com/micro/go-micro/codec/json" "github.com/micro/go-micro/codec/jsonrpc" @@ -29,7 +30,9 @@ type readWriteCloser struct { } var ( - defaultCodecs = map[string]codec.NewCodec{ + DefaultContentType = "application/protobuf" + + DefaultCodecs = map[string]codec.NewCodec{ "application/grpc": grpc.NewCodec, "application/grpc+json": grpc.NewCodec, "application/grpc+proto": grpc.NewCodec, @@ -37,7 +40,7 @@ var ( "application/json-rpc": jsonrpc.NewCodec, "application/protobuf": proto.NewCodec, "application/proto-rpc": protorpc.NewCodec, - "application/octet-stream": protorpc.NewCodec, + "application/octet-stream": raw.NewCodec, } ) diff --git a/server/rpc_server.go b/server/rpc_server.go index 171848b0..5528521c 100644 --- a/server/rpc_server.go +++ b/server/rpc_server.go @@ -74,8 +74,13 @@ func (s *rpcServer) accept(sock transport.Socket) { // we use this Content-Type header to identify the codec needed ct := msg.Header["Content-Type"] - cf, err := s.newCodec(ct) + // no content type + if len(ct) == 0 { + ct = DefaultContentType + } + // TODO: needs better error handling + cf, err := s.newCodec(ct) if err != nil { sock.Send(&transport.Message{ Header: map[string]string{ @@ -124,7 +129,7 @@ func (s *rpcServer) newCodec(contentType string) (codec.NewCodec, error) { if cf, ok := s.opts.Codecs[contentType]; ok { return cf, nil } - if cf, ok := defaultCodecs[contentType]; ok { + if cf, ok := DefaultCodecs[contentType]; ok { return cf, nil } return nil, fmt.Errorf("Unsupported Content-Type: %s", contentType)