C ++ Avro: как инициализировать ValidSchema с автоматически сгенерированной схемой?

У меня есть автоматически сгенерированная схема avro, которую я могу кодировать и декодировать в потоки памяти avro.

Теперь я хотел бы записать в файл, и я должен кое-как активировать мой файловый писатель с помощью следующего:

#include "avro/Encoder.hh"#include "avro/Decoder.hh"#include "avro/ValidSchema.hh"#include "avro/Compiler.hh"#include "avro/DataFile.hh

avro::ValidSchema loadSchema(const char* filename)
{
std::ifstream ifs(filename);
avro::ValidSchema result;
avro::compileJsonSchema(ifs, result);
return result;
}

int
main()
{
avro::ValidSchema cpxSchema = loadSchema("cpx.json");

{
avro::DataFileWriter<c::cpx> dfw("test.bin", cpxSchema);
c::cpx c1;
for (int i = 0; i < 100; i++) {
c1.re = i * 100;
c1.im = i + 100;
dfw.write(c1);
}
dfw.close();
}

{
avro::DataFileReader<c::cpx> dfr("test.bin", cpxSchema);
c::cpx c2;
while (dfr.read(c2)) {
std::cout << '(' << c2.re << ", " << c2.im << ')' << std::endl;
}
}
return 0;

}

Итак, у меня есть мой автоматически сгенерированный файл в auto_generated.hh (Команда: avrogencpp -i schema.json -o auto_generated.hh -n auto_generated) и я включил в него все соответствующие файлы, и, за исключением загрузки схемы из моего файла json (что, кажется, не имеет смысла, если я уже все автоматически сгенерировал), я попробовал следующее:

#include "auto_generated.hh"
int main(){

/*
auto_generated::schema() is going to produce the datum which I am
storing.

auto_generated::schema is the struct which contains the data
members which will be set during the course of data output.

*///avro::ValidSchema vs; vs.setSchema(auto_generated::schema);

// auto_generated::schema schema = auto_generated::schema();
// avro::ValidSchema vs(schema);

// avro::ValidSchema vs;
// auto_generated::schema schema = auto_generated::schema();
// vs.setSchema(schema);

avro::ValidSchema vs;
avro::Schema s = auto_generated::schema(); // or without ()
vs.setSchema(s);

// etc.

avro::DataFileWriter<auto_generated::schema> dfw("foo",vs);
}

Как мне инициализировать ValidSchema и построить DataFileWriter чтобы записать мои данные в файл?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector