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

Method Write

go/fory/extension.go:40–69  ·  view source on GitHub ↗
(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value)

Source from the content-addressed store, hash-verified

38}
39
40func (s *extensionSerializerAdapter) Write(ctx *WriteContext, refMode RefMode, writeType bool, hasGenerics bool, value reflect.Value) {
41 _ = hasGenerics // not used for extension serializers
42 buf := ctx.Buffer()
43 switch refMode {
44 case RefModeTracking:
45 refWritten, err := ctx.RefResolver().WriteRefOrNull(buf, value)
46 if err != nil {
47 ctx.SetError(FromError(err))
48 return
49 }
50 if refWritten {
51 return
52 }
53 case RefModeNullOnly:
54 if isNil(value) {
55 buf.WriteInt8(NullFlag)
56 return
57 }
58 buf.WriteInt8(NotNullValueFlag)
59 }
60 if writeType {
61 typeInfo, err := ctx.TypeResolver().getTypeInfo(value, true)
62 if err != nil {
63 ctx.SetError(FromError(err))
64 return
65 }
66 ctx.TypeResolver().WriteTypeInfo(buf, typeInfo, ctx.Err())
67 }
68 s.WriteData(ctx, value)
69}
70
71func (s *extensionSerializerAdapter) ReadData(ctx *ReadContext, value reflect.Value) {
72 // Delegate to user's serializer

Callers

nothing calls this directly

Calls 12

WriteDataMethod · 0.95
FromErrorFunction · 0.85
isNilFunction · 0.85
WriteRefOrNullMethod · 0.80
BufferMethod · 0.45
RefResolverMethod · 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