MCPcopy Create free account
hub / github.com/segmentio/encoding / messageEncodeFuncOf

Function messageEncodeFuncOf

proto/message.go:317–345  ·  view source on GitHub ↗
(t reflect.Type)

Source from the content-addressed store, hash-verified

315}
316
317func messageEncodeFuncOf(t reflect.Type) encodeFunc {
318 return func(b []byte, p unsafe.Pointer, flags flags) (int, error) {
319 if p != nil {
320 if m := reflect.NewAt(t, p).Interface().(Message); m != nil {
321 size := m.Size()
322
323 if flags.has(toplevel) {
324 if len(b) < size {
325 return 0, io.ErrShortBuffer
326 }
327 return len(b), m.Marshal(b)
328 }
329
330 vlen := sizeOfVarlen(size)
331 if len(b) < vlen {
332 return 0, io.ErrShortBuffer
333 }
334
335 n, err := encodeVarint(b, uint64(size))
336 if err != nil {
337 return n, err
338 }
339
340 return vlen, m.Marshal(b[n:])
341 }
342 }
343 return 0, nil
344 }
345}
346
347func messageDecodeFuncOf(t reflect.Type) decodeFunc {
348 return func(b []byte, p unsafe.Pointer, flags flags) (int, error) {

Callers 1

messageCodecOfFunction · 0.85

Calls 5

sizeOfVarlenFunction · 0.85
encodeVarintFunction · 0.85
SizeMethod · 0.65
MarshalMethod · 0.65
hasMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…