17 #ifndef AVROGENERICUTILS_HPP_
18 #define AVROGENERICUTILS_HPP_
23 #include <avro/Generic.hh>
43 static bool isUuid(
const avro::GenericDatum &d) {
44 if (d.type() == avro::AVRO_FIXED) {
45 auto f = d.value<avro::GenericFixed>();
46 return f.schema()->name().fullname().compare(AvroGenericUtils::UUIDT) == 0;
58 static bool isFixed(
const avro::GenericDatum &d) {
59 return (d.type() == avro::AVRO_FIXED);
69 static bool isEnum(
const avro::GenericDatum &d) {
70 return (d.type() == avro::AVRO_ENUM);
80 static bool isRecord(
const avro::GenericDatum &d) {
81 return (d.type() == avro::AVRO_RECORD);
91 static bool isArray(
const avro::GenericDatum &d) {
92 return (d.type() == avro::AVRO_ARRAY);
102 static bool isNull(
const avro::GenericDatum &d) {
103 return d.type() == avro::AVRO_NULL;
113 static bool isReset(
const avro::GenericDatum &d) {
114 if (d.type() != avro::AVRO_ENUM) {
117 const avro::GenericEnum &e = d.value<avro::GenericEnum>();
118 return e.schema()->name().fullname().compare(AvroGenericUtils::RESETT) == 0;
129 if (d.type() != avro::AVRO_ENUM) {
132 const avro::GenericEnum &e = d.value<avro::GenericEnum>();
133 return e.schema()->name().fullname().compare(AvroGenericUtils::UNCHANGEDT) == 0;
144 const avro::GenericFixed& uuidFixed = datum.value<avro::GenericRecord>().
145 field(
"__uuid").value<avro::GenericFixed>();
147 if (uuidFixed.value().size() != uuid.size()) {
151 std::copy(uuidFixed.value().begin(), uuidFixed.value().end(), uuid.begin());
163 const avro::GenericFixed& uuidFixed = datum.value<avro::GenericFixed>();
165 if (uuidFixed.value().size() != uuid.size()) {
169 std::copy(uuidFixed.value().begin(), uuidFixed.value().end(), uuid.begin());
176 static const std::string RESETT;
177 static const std::string UNCHANGEDT;
178 static const std::string UUIDT;
static bool isEnum(const avro::GenericDatum &d)
static bool isReset(const avro::GenericDatum &d)
static bool isNull(const avro::GenericDatum &d)
static bool isUnchanged(const avro::GenericDatum &d)
static bool isArray(const avro::GenericDatum &d)
boost::uuids::uuid uuid_t
static uuid_t getUuidFromDatum(const avro::GenericDatum &datum)
static DeltaHandlerId getDeltaIDFromDatum(const avro::GenericDatum &datum)
static bool isRecord(const avro::GenericDatum &d)
static bool isFixed(const avro::GenericDatum &d)
static bool isUuid(const avro::GenericDatum &d)