github.com/batchcorp/thrift-iterator@v0.0.0-20220918180557-4c4a158fc6e9/raw/encode_map.go (about)

     1  package raw
     2  
     3  import (
     4  	"github.com/batchcorp/thrift-iterator/spi"
     5  	"github.com/batchcorp/thrift-iterator/protocol"
     6  )
     7  
     8  type rawMapEncoder struct {
     9  }
    10  
    11  func (encoder *rawMapEncoder) Encode(val interface{}, stream spi.Stream) {
    12  	obj := val.(Map)
    13  	length := len(obj.Entries)
    14  	stream.WriteMapHeader(obj.KeyType, obj.ElementType, length)
    15  	for _, entry := range obj.Entries {
    16  		stream.Write(entry.Key)
    17  		stream.Write(entry.Element)
    18  	}
    19  }
    20  
    21  func (encoder *rawMapEncoder) ThriftType() protocol.TType {
    22  	return protocol.TypeMap
    23  }