Esempio n. 1
0
 def SerializeToString(self):
     # Check if the message has all of its required fields set.
     errors = []
     if not self.IsInitialized():
         raise message_mod.EncodeError(
             'Message %s is missing required fields: %s' %
             (self.DESCRIPTOR.full_name, ','.join(
                 self.FindInitializationErrors())))
     return self.SerializePartialToString()
Esempio n. 2
0
def PackTag(field_number, wire_type):
    """Returns an unsigned 32-bit integer that encodes the field number and
  wire type information in standard protocol message wire format.

  Args:
    field_number: Expected to be an integer in the range [1, 1 << 29)
    wire_type: One of the WIRETYPE_* constants.
  """
    if not 0 <= wire_type <= _WIRETYPE_MAX:
        raise message.EncodeError('Unknown wire type: %d' % wire_type)
    return (field_number << TAG_TYPE_BITS) | wire_type
Esempio n. 3
0
def _VarUInt64ByteSizeNoTag(uint64):
    """Returns the number of bytes required to serialize a single varint
  using boundary value comparisons. (unrolled loop optimization -WPierce)
  uint64 must be unsigned.
  """
    if uint64 <= 0x7f: return 1
    if uint64 <= 0x3fff: return 2
    if uint64 <= 0x1fffff: return 3
    if uint64 <= 0xfffffff: return 4
    if uint64 <= 0x7ffffffff: return 5
    if uint64 <= 0x3ffffffffff: return 6
    if uint64 <= 0x1ffffffffffff: return 7
    if uint64 <= 0xffffffffffffff: return 8
    if uint64 <= 0x7fffffffffffffff: return 9
    if uint64 > UINT64_MAX:
        raise message.EncodeError('Value out of range: %d' % uint64)
    return 10
Esempio n. 4
0
def _BytesForNonRepeatedElement(value, field_number, field_type):
    """Returns the number of bytes needed to serialize a non-repeated element.
  The returned byte count includes space for tag information and any
  other additional space associated with serializing value.

  Args:
    value: Value we're serializing.
    field_number: Field number of this value.  (Since the field number
      is stored as part of a varint-encoded tag, this has an impact
      on the total bytes required to serialize the value).
    field_type: The type of the field.  One of the TYPE_* constants
      within FieldDescriptor.
  """
    try:
        fn = type_checkers.TYPE_TO_BYTE_SIZE_FN[field_type]
        return fn(field_number, value)
    except KeyError:
        raise message_mod.EncodeError('Unrecognized field type: %d' %
                                      field_type)