From 30304493487d70b0eb6b8ebb7630feb32398dc97 Mon Sep 17 00:00:00 2001 From: Tsingson Date: Tue, 20 Aug 2019 06:32:04 +0800 Subject: [PATCH] [go]add Name() for ForceCodec interface (#5486) * add Name() for ForceCodec interface // ForceCodec returns a CallOption that will set the given Codec to be // used for all request and response messages for a call. The result of calling // String() will be used as the content-subtype in a case-insensitive manner. // * Update grpc.go --- go/grpc.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/go/grpc.go b/go/grpc.go index e7dabd3c6..15f1a510d 100644 --- a/go/grpc.go +++ b/go/grpc.go @@ -3,21 +3,36 @@ package flatbuffers // Codec implements gRPC-go Codec which is used to encode and decode messages. var Codec = "flatbuffers" +// FlatbuffersCodec defines the interface gRPC uses to encode and decode messages. Note +// that implementations of this interface must be thread safe; a Codec's +// methods can be called from concurrent goroutines. type FlatbuffersCodec struct{} +// Marshal returns the wire format of v. func (FlatbuffersCodec) Marshal(v interface{}) ([]byte, error) { return v.(*Builder).FinishedBytes(), nil } +// Unmarshal parses the wire format into v. func (FlatbuffersCodec) Unmarshal(data []byte, v interface{}) error { v.(flatbuffersInit).Init(data, GetUOffsetT(data)) return nil } +// String old gRPC Codec interface func func (FlatbuffersCodec) String() string { return Codec } +// Name returns the name of the Codec implementation. The returned string +// will be used as part of content type in transmission. The result must be +// static; the result cannot change between calls. +// +// add Name() for ForceCodec interface +func (FlatbuffersCodec) Name() string { + return Codec +} + type flatbuffersInit interface { Init(data []byte, i UOffsetT) }