MCPcopy Create free account
hub / github.com/apache/fory / writeNullKeyEntry

Method writeNullKeyEntry

go/fory/map.go:159–193  ·  view source on GitHub ↗

writeNullKeyEntry writes a single entry where the key is null

(ctx *WriteContext, value reflect.Value, resolver *TypeResolver, trackRef bool)

Source from the content-addressed store, hash-verified

157
158// writeNullKeyEntry writes a single entry where the key is null
159func (s mapSerializer) writeNullKeyEntry(ctx *WriteContext, value reflect.Value, resolver *TypeResolver, trackRef bool) {
160 buf := ctx.Buffer()
161
162 if s.hasGenerics && s.valueSerializer != nil {
163 if s.valueReferencable && trackRef {
164 buf.WriteInt8(NULL_KEY_VALUE_DECL_TYPE_TRACKING_REF)
165 s.valueSerializer.Write(ctx, RefModeTracking, false, true, value)
166 } else {
167 buf.WriteInt8(NULL_KEY_VALUE_DECL_TYPE)
168 writeSerializerData(ctx, s.valueSerializer, true, value)
169 }
170 return
171 }
172
173 // Polymorphic value
174 valueTypeInfo, err := getTypeInfoForValue(value, resolver)
175 if err != nil {
176 ctx.SetError(FromError(err))
177 return
178 }
179
180 header := int8(KEY_HAS_NULL)
181 writeValueRef := trackRef && s.valueReferencable && valueTypeInfo.NeedWriteRef
182 if writeValueRef {
183 header |= TRACKING_VALUE_REF
184 }
185 buf.WriteInt8(header)
186 resolver.WriteTypeInfo(buf, valueTypeInfo, ctx.Err())
187
188 refMode := RefModeNone
189 if writeValueRef {
190 refMode = RefModeTracking
191 }
192 valueTypeInfo.Serializer.Write(ctx, refMode, false, false, value)
193}
194
195// writeChunk writes a chunk of entries with the same key/value types
196func (s mapSerializer) writeChunk(ctx *WriteContext, iter *reflect.MapIter, entryKey, entryVal *reflect.Value, resolver *TypeResolver, trackRef bool) bool {

Callers 1

WriteDataMethod · 0.95

Calls 10

writeSerializerDataFunction · 0.85
getTypeInfoForValueFunction · 0.85
FromErrorFunction · 0.85
WriteMethod · 0.65
int8Function · 0.50
BufferMethod · 0.45
WriteInt8Method · 0.45
SetErrorMethod · 0.45
WriteTypeInfoMethod · 0.45
ErrMethod · 0.45

Tested by

no test coverage detected