예제 #1
0
static int
avro_datum_value_get_int(const avro_value_iface_t *iface,
			 const void *vself, int32_t *out)
{
	AVRO_UNUSED(iface);
	const avro_datum_t  self = (const avro_datum_t) vself;
	check_param(EINVAL, self, "datum instance");

	int  rval;
	int32_t  value;
	check(rval, avro_int32_get(self, &value));
	*out = value;
	return 0;
}
예제 #2
0
static int read_data_datum() {
	int rval;
	int records_read = 0;

	avro_file_reader_t reader;
	avro_datum_t datum;

	fprintf(stderr, "\nReading...\n");

	rval = avro_file_reader(filename, &reader);

	if (rval) {
		fprintf(stderr, "Error using 'datum': %s\n", avro_strerror());
		return -1;
	}

	avro_schema_t schema = avro_file_reader_get_writer_schema(reader);

	while ((rval = avro_file_reader_read(reader, schema, &datum)) == 0) {
		avro_datum_t val_datum;
		int32_t val;
		if (avro_record_get(datum, "ab", &val_datum)) {
			fprintf(stderr, "Error getting value: %s\n", avro_strerror());
			return -1;
		}
		avro_int32_get(val_datum, &val);
		fprintf(stderr, "value = %d\n", val);
		records_read++;
		avro_datum_decref(datum);
	}

	avro_schema_decref(schema);
	avro_file_reader_close(reader);

	fprintf(stderr, "read %d records using 'datum'.\n", records_read);

	if (rval != EOF) {
		fprintf(stderr, "Error using 'datum': %s\n", avro_strerror());
		return -1;
	}

	return records_read;
}
예제 #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;
}