История изменений
Исправление dimgel, (текущая версия) :
Так что всякие Protobuf не подходят, потому что помимо самих данных пишут всякую метаинформацию.
Наш человек! =) Напиши своё, не бог весть какая проблема. У меня API примитивное: read/write(int16_t), (int32_t), (const char*), … И сериализация каждой структуры выполняется вручную (псевдокод C++ like, я хз как там правильно полагается на сях):
void serialize(binostream& os, LoginStruct x) {
os.write(1); // версия, если угодно.
os.write(x.login);
os.write(x.password);
}
Десериализация – точно также руками в лоб.
Любая попытка «автоматизировать» этот предельно тупой подход – через рефлексию там или ещё как, даже на жаве (где дохерища всяких говнорешений, сериализующих через рефлексию) приведёт лишь к усложнению, утяжелению засериализованного формата, и потере твоего контроля над ситуацией. Зуб даю.
UPD. Ну на сях, без оверлоадед, я бы сделал функции void write_i16(os, int16_t)
/ int16_t read_i16(is)
и т.п.
Credit goes to: Apache Wink (давным-давно всеми забытый JSON serializer, в силу засилья жаваскриптомакак).
Исправление dimgel, :
Так что всякие Protobuf не подходят, потому что помимо самих данных пишут всякую метаинформацию.
Наш человек! =) Напиши своё, не бог весть какая проблема. У меня API примитивное: read/write(int16_t), (int32_t), (const char*), … И сериализация каждой структуры выполняется вручную (псевдокод C++ like, я хз как там правильно полагается на сях):
void serialize(binostream& os, LoginStruct x) {
os.write(1); // версия, если угодно.
os.write(x.login);
os.write(x.password);
}
Десериализация – точно также руками в лоб.
Любая попытка «автоматизировать» этот предельно тупой подход – через рефлексию там или ещё как, даже на жаве (где дохерища всяких говнорешений, сериализующих через рефлексию) приведёт лишь к усложнению, утяжелению засериализованного формата, и потере твоего контроля над ситуацией. Зуб даю.
UPD. Ну на сях, без оверлоадед, я бы сделал функции void write_i16(os, int16_t)
/ int16_t read_i16(is)
и т.п.
Исправление dimgel, :
Так что всякие Protobuf не подходят, потому что помимо самих данных пишут всякую метаинформацию.
Наш человек! =) Напиши своё, не бог весть какая проблема. У меня API примитивное: read/write(int16_t), (int32_t), (const char*), … И сериализация каждой структуры выполняется вручную (псевдокод C++ like, я хз как там правильно полагается на сях):
void serialize(binostream& os, LoginStruct x) {
os.write(1); // версия, если угодно.
os.write(x.login);
os.write(x.password);
}
Десериализация – точно также руками в лоб.
Любая попытка «автоматизировать» этот предельно тупой подход – через рефлексию там или ещё как, даже на жаве (где дохерища всяких говнорешений, сериализующих через рефлексию) приведёт лишь к усложнению, утяжелению засериализованного формата, и потере твоего контроля над ситуацией. Зуб даю.
Исходная версия dimgel, :
Так что всякие Protobuf не подходят, потому что помимо самих данных пишут всякую метаинформацию.
Наш человек! =) Напиши своё, не бог весть какая проблема. У меня API примитивное: read/write(int16_t), (int32_t), (const char*), … И сериализация каждой структуры выполняется вручную (псевдокод C++ like, как там правильно полагается на сях, я хз):
void serialize(binostream& os, LoginStruct x) {
os.write(1); // версия, если угодно.
os.write(x.login);
os.write(x.password);
}
Десериализация – точно также руками в лоб.
Любая попытка «автоматизировать» этот предельно тупой подход – через рефлексию там или ещё как, даже на жаве (где дохерища всяких говнорешений, сериализующих через рефлексию) приведёт лишь к усложнению, утяжелению засериализованного формата, и потере твоего контроля над ситуацией. Зуб даю.