github.com/batchcorp/thrift-iterator@v0.0.0-20220918180557-4c4a158fc6e9/general/encode_struct.go (about) 1 package general 2 3 import ( 4 "github.com/batchcorp/thrift-iterator/spi" 5 "github.com/batchcorp/thrift-iterator/protocol" 6 ) 7 8 type generalStructEncoder struct { 9 } 10 11 func (encoder *generalStructEncoder) Encode(val interface{}, stream spi.Stream) { 12 writeStruct(val, stream) 13 } 14 15 func (encoder *generalStructEncoder) ThriftType() protocol.TType { 16 return protocol.TypeStruct 17 } 18 19 func writeStruct(val interface{}, stream spi.Stream) { 20 obj := val.(Struct) 21 stream.WriteStructHeader() 22 for fieldId, elem := range obj { 23 fieldType, generalWriter := generalWriterOf(elem) 24 stream.WriteStructField(fieldType, fieldId) 25 generalWriter(elem, stream) 26 } 27 stream.WriteStructFieldStop() 28 }