func Codec(contentType string, c encoding.Codec) server.Option {
	return func(o *server.Options) {
		codecs := make(map[string]encoding.Codec)
		if o.Context == nil {
			o.Context = context.Background()
		}
		if v, ok := o.Context.Value(codecsKey{}).(map[string]encoding.Codec); ok && v != nil {
			codecs = v
		}
		codecs[contentType] = c
		o.Context = context.WithValue(o.Context, codecsKey{}, codecs)
	}
}
gRPC Codec to be used to encode/decode requests for a given content type
package grpc
import (
	"context"
	"crypto/tls"
	"net"
	"github.com/improbable-eng/grpc-web/go/grpcweb"
	"github.com/micro/micro/v3/service/broker/memory"
	memReg "github.com/micro/micro/v3/service/registry/memory"
	"github.com/micro/micro/v3/service/server"
	"github.com/micro/micro/v3/util/codec"
	"google.golang.org/grpc"
	"google.golang.org/grpc/encoding"
)
type codecsKey struct{}
type grpcOptions struct{}
type netListener struct{}
type maxMsgSizeKey struct{}
type maxRecvMsgSizeKey struct{}
type maxSendMsgSizeKey struct{}
type maxConnKey struct{}
type tlsAuth struct{}
type grpcWebOptions struct{}
type grpcWebPort struct{}