func SimpleDecoder(f func(proto.Message) *[]byte) Decoder {
	return func(msg proto.Message, offset int, p []byte) ([]byte, error) {
		bytePtr := f(msg)
		copy(p, (*bytePtr)[offset:])
		return *bytePtr, nil
	}
}
SimpleDecoder is the easiest way to generate a Decoder for a proto.Message.
Provide a callback that gets the pointer to the byte slice field and a
valid decoder will be generated.
package grpc_net_conn
import (
	"github.com/golang/protobuf/proto"
)
type Encoder func(proto.Message, []byte) (int, error)
type Decoder func(m proto.Message, offset int, p []byte) ([]byte, error)
func SimpleEncoder(f func(proto.Message) *[]byte) Encoder {
	return func(msg proto.Message, p []byte) (int, error) {
		bytePtr := f(msg)
		*bytePtr = p
		return len(p), nil
	}
}