MCPcopy
hub / github.com/uber/aresdb / Write

Method Write

memstore/common/data_value.go:599–707  ·  view source on GitHub ↗

Write serialize data into writer Serialized Array data format: number of items: 4 bytes item values: per item bytes * number of items, align to byte item validity: 1 bit * number of items final align to 8 bytes

(writer *utils.BufferWriter)

Source from the content-addressed store, hash-verified

597// item validity: 1 bit * number of items
598// final align to 8 bytes
599func (av *ArrayValue) Write(writer *utils.BufferWriter) error {
600 num := av.GetLength()
601 err := writer.AppendUint32(uint32(num))
602 if err != nil {
603 return err
604 }
605 // add value for each item
606 for _, val := range av.Items {
607 switch av.DataType {
608 case Bool:
609 if val == nil {
610 err = writer.AppendBool(false)
611 } else {
612 err = writer.AppendBool(val.(bool))
613 }
614 case Int8:
615 if val == nil {
616 err = writer.AppendInt8(0)
617 } else {
618 err = writer.AppendInt8(val.(int8))
619 }
620 case Uint8, SmallEnum:
621 if val == nil {
622 err = writer.AppendUint8(0)
623 } else {
624 err = writer.AppendUint8(val.(uint8))
625 }
626 case Int16:
627 if val == nil {
628 err = writer.AppendInt16(0)
629 } else {
630 err = writer.AppendInt16(val.(int16))
631 }
632 case Uint16, BigEnum:
633 if val == nil {
634 err = writer.AppendUint16(0)
635 } else {
636 err = writer.AppendUint16(val.(uint16))
637 }
638 case Int32:
639 if val == nil {
640 err = writer.AppendInt32(0)
641 } else {
642 err = writer.AppendInt32(val.(int32))
643 }
644 case Uint32:
645 if val == nil {
646 err = writer.AppendUint32(0)
647 } else {
648 err = writer.AppendUint32(val.(uint32))
649 }
650 case Float32:
651 if val == nil {
652 err = writer.AppendFloat32(0)
653 } else {
654 err = writer.AppendFloat32(val.(float32))
655 }
656 case Int64:

Callers

nothing calls this directly

Calls 12

GetLengthMethod · 0.95
AppendUint32Method · 0.80
AppendBoolMethod · 0.80
AppendInt8Method · 0.80
AppendUint8Method · 0.80
AppendInt16Method · 0.80
AppendUint16Method · 0.80
AppendInt32Method · 0.80
AppendFloat32Method · 0.80
AppendInt64Method · 0.80
AppendUint64Method · 0.80
AlignBytesMethod · 0.80

Tested by

no test coverage detected