1*890232f2SAndroid Build Coastguard Workerpackage flatbuffers 2*890232f2SAndroid Build Coastguard Worker 3*890232f2SAndroid Build Coastguard Worker// Codec implements gRPC-go Codec which is used to encode and decode messages. 4*890232f2SAndroid Build Coastguard Workervar Codec = "flatbuffers" 5*890232f2SAndroid Build Coastguard Worker 6*890232f2SAndroid Build Coastguard Worker// FlatbuffersCodec defines the interface gRPC uses to encode and decode messages. Note 7*890232f2SAndroid Build Coastguard Worker// that implementations of this interface must be thread safe; a Codec's 8*890232f2SAndroid Build Coastguard Worker// methods can be called from concurrent goroutines. 9*890232f2SAndroid Build Coastguard Workertype FlatbuffersCodec struct{} 10*890232f2SAndroid Build Coastguard Worker 11*890232f2SAndroid Build Coastguard Worker// Marshal returns the wire format of v. 12*890232f2SAndroid Build Coastguard Workerfunc (FlatbuffersCodec) Marshal(v interface{}) ([]byte, error) { 13*890232f2SAndroid Build Coastguard Worker return v.(*Builder).FinishedBytes(), nil 14*890232f2SAndroid Build Coastguard Worker} 15*890232f2SAndroid Build Coastguard Worker 16*890232f2SAndroid Build Coastguard Worker// Unmarshal parses the wire format into v. 17*890232f2SAndroid Build Coastguard Workerfunc (FlatbuffersCodec) Unmarshal(data []byte, v interface{}) error { 18*890232f2SAndroid Build Coastguard Worker v.(flatbuffersInit).Init(data, GetUOffsetT(data)) 19*890232f2SAndroid Build Coastguard Worker return nil 20*890232f2SAndroid Build Coastguard Worker} 21*890232f2SAndroid Build Coastguard Worker 22*890232f2SAndroid Build Coastguard Worker// String old gRPC Codec interface func 23*890232f2SAndroid Build Coastguard Workerfunc (FlatbuffersCodec) String() string { 24*890232f2SAndroid Build Coastguard Worker return Codec 25*890232f2SAndroid Build Coastguard Worker} 26*890232f2SAndroid Build Coastguard Worker 27*890232f2SAndroid Build Coastguard Worker// Name returns the name of the Codec implementation. The returned string 28*890232f2SAndroid Build Coastguard Worker// will be used as part of content type in transmission. The result must be 29*890232f2SAndroid Build Coastguard Worker// static; the result cannot change between calls. 30*890232f2SAndroid Build Coastguard Worker// 31*890232f2SAndroid Build Coastguard Worker// add Name() for ForceCodec interface 32*890232f2SAndroid Build Coastguard Workerfunc (FlatbuffersCodec) Name() string { 33*890232f2SAndroid Build Coastguard Worker return Codec 34*890232f2SAndroid Build Coastguard Worker} 35*890232f2SAndroid Build Coastguard Worker 36*890232f2SAndroid Build Coastguard Workertype flatbuffersInit interface { 37*890232f2SAndroid Build Coastguard Worker Init(data []byte, i UOffsetT) 38*890232f2SAndroid Build Coastguard Worker} 39