Пример #1
0
static int test_map(void)
{
    avro_schema_t schema = avro_schema_map(avro_schema_long());
    avro_datum_t datum = avro_map(schema);
    int64_t i = 0;
    char *nums[] =
    { "zero", "one", "two", "three", "four", "five", "six", NULL };
    while (nums[i]) {
        avro_datum_t i_datum = avro_int64(i);
        avro_map_set(datum, nums[i], i_datum);
        avro_datum_decref(i_datum);
        i++;
    }

    if (avro_array_size(datum) != 7) {
        fprintf(stderr, "Unexpected map size\n");
        exit(EXIT_FAILURE);
    }

    avro_datum_t value;
    const char  *key;
    avro_map_get_key(datum, 2, &key);
    avro_map_get(datum, key, &value);
    int64_t  val;
    avro_int64_get(value, &val);

    if (val != 2) {
        fprintf(stderr, "Unexpected map value 2\n");
        exit(EXIT_FAILURE);
    }

    int  index;
    if (avro_map_get_index(datum, "two", &index)) {
        fprintf(stderr, "Can't get index for key \"two\": %s\n",
                avro_strerror());
        exit(EXIT_FAILURE);
    }
    if (index != 2) {
        fprintf(stderr, "Unexpected index for key \"two\"\n");
        exit(EXIT_FAILURE);
    }
    if (!avro_map_get_index(datum, "foobar", &index)) {
        fprintf(stderr, "Unexpected index for key \"foobar\"\n");
        exit(EXIT_FAILURE);
    }

    write_read_check(schema, datum, NULL, NULL, "map");
    test_json(datum,
              "{\"zero\": 0, \"one\": 1, \"two\": 2, \"three\": 3, "
              "\"four\": 4, \"five\": 5, \"six\": 6}");
    avro_datum_decref(datum);
    avro_schema_decref(schema);
    return 0;
}
Пример #2
0
static int
avro_datum_value_get_long(const avro_value_iface_t *iface,
			  const void *vself, int64_t *out)
{
	AVRO_UNUSED(iface);
	const avro_datum_t  self = (const avro_datum_t) vself;
	check_param(EINVAL, self, "datum instance");

	int  rval;
	int64_t  value;
	check(rval, avro_int64_get(self, &value));
	*out = value;
	return 0;
}
Пример #3
0
/*输出数据库中的学生信息*/
int show_student(avro_file_reader_t db,
                 avro_schema_t reader_schema)
{
    int rval;
    avro_datum_t student;

    rval = avro_file_reader_read(db, reader_schema, &student);

    if (rval == 0) {
        int64_t i64;
        int32_t i32;
        char *p;
        avro_datum_t sid_datum, name_datum, dept_datum,
                     phone_datum, age_datum;

        if (avro_record_get(student, "SID", &sid_datum) == 0) {
            avro_int64_get(sid_datum, &i64);
            fprintf(stdout, "%"PRId64"  ", i64);
        }
        if (avro_record_get(student, "Name", &name_datum) == 0) {
            avro_string_get(name_datum, &p);
            fprintf(stdout, "%12s  ", p);
        }
        if (avro_record_get(student, "Dept", &dept_datum) == 0) {
            avro_string_get(dept_datum, &p);
            fprintf(stdout, "%12s  ", p);
        }
        if (avro_record_get(student, "Phone", &phone_datum) == 0) {
            avro_string_get(phone_datum, &p);
            fprintf(stdout, "%12s  ", p);
        }
        if (avro_record_get(student, "Age", &age_datum) == 0) {
            avro_int32_get(age_datum, &i32);
            fprintf(stdout, "%d", i32);
        }
        fprintf(stdout, "\n");

        /*释放记录*/
        avro_datum_decref(student);
    }
    return rval;
}