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

Method writeValue

go/fory/optional_serializer.go:223–248  ·  view source on GitHub ↗
(ctx *WriteContext, refMode RefMode, writeType bool, valueField reflect.Value)

Source from the content-addressed store, hash-verified

221}
222
223func (s *optionalSerializer) writeValue(ctx *WriteContext, refMode RefMode, writeType bool, valueField reflect.Value) {
224 switch refMode {
225 case RefModeTracking:
226 refWritten, err := ctx.RefResolver().WriteRefOrNull(ctx.Buffer(), valueField)
227 if err != nil {
228 ctx.SetError(FromError(err))
229 return
230 }
231 if refWritten {
232 return
233 }
234 case RefModeNullOnly:
235 ctx.Buffer().WriteInt8(NotNullValueFlag)
236 case RefModeNone:
237 // No ref/null flag written.
238 }
239 if writeType {
240 info, err := ctx.TypeResolver().getTypeInfo(valueField, true)
241 if err != nil {
242 ctx.SetError(FromError(err))
243 return
244 }
245 ctx.TypeResolver().WriteTypeInfo(ctx.Buffer(), info, ctx.Err())
246 }
247 s.valueSerializer.WriteData(ctx, valueField)
248}
249
250func (s *optionalSerializer) WriteData(ctx *WriteContext, value reflect.Value) {
251 // WriteData assumes the value is present and writes data only (no null/ref flags).

Callers 2

WriteMethod · 0.95
serializeMethod · 0.45

Calls 11

FromErrorFunction · 0.85
WriteRefOrNullMethod · 0.80
WriteDataMethod · 0.65
RefResolverMethod · 0.45
BufferMethod · 0.45
SetErrorMethod · 0.45
WriteInt8Method · 0.45
getTypeInfoMethod · 0.45
TypeResolverMethod · 0.45
WriteTypeInfoMethod · 0.45
ErrMethod · 0.45

Tested by

no test coverage detected