Ejemplo n.º 1
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     out_stream.write_int32(len(value))
     for elem in value:
         if elem is None:
             out_stream.write_byte(False)
         else:
             out_stream.write_byte(True)
             self._elem_coder.encode_to_stream(elem, out_stream)
Ejemplo n.º 2
0
    def encode_to_stream(self, value: List, out_stream: OutputStream):
        for item in value:
            self._field_coder.encode_to_stream(item, self._data_out_stream)
            self._write_data_to_output_stream(out_stream)

        # write end message
        if self._separated_with_end_message:
            out_stream.write_var_int64(1)
            out_stream.write_byte(0x00)
Ejemplo n.º 3
0
 def encode_to_stream(self, map_value, out_stream: OutputStream):
     out_stream.write_int32(len(map_value))
     for key in map_value:
         self._key_coder.encode_to_stream(key, out_stream)
         value = map_value[key]
         if value is None:
             out_stream.write_byte(True)
         else:
             out_stream.write_byte(False)
             self._value_coder.encode_to_stream(map_value[key], out_stream)
Ejemplo n.º 4
0
    def write_mask(self, value, row_kind_value, out_stream: OutputStream):
        field_pos = 0
        null_byte_search_table = self.null_byte_search_table
        remaining_bits_num = self._remaining_bits_num

        # first byte contains the row kind bits
        b = self.row_kind_search_table[row_kind_value]
        for i in range(0, 8 - ROW_KIND_BIT_SIZE):
            if field_pos + i < len(value) and value[field_pos + i] is None:
                b |= null_byte_search_table[i + ROW_KIND_BIT_SIZE]
        field_pos += 8 - ROW_KIND_BIT_SIZE
        out_stream.write_byte(b)

        for _ in range(1, self._leading_complete_bytes_num):
            b = 0x00
            for i in range(0, 8):
                if value[field_pos + i] is None:
                    b |= null_byte_search_table[i]
            field_pos += 8
            out_stream.write_byte(b)

        if self._leading_complete_bytes_num >= 1 and remaining_bits_num:
            b = 0x00
            for i in range(remaining_bits_num):
                if value[field_pos + i] is None:
                    b |= null_byte_search_table[i]
            out_stream.write_byte(b)
Ejemplo n.º 5
0
 def encode_to_stream(self, value, out_stream: OutputStream):
     out_stream.write_byte(0)