LINUX.ORG.RU

История изменений

Исправление 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);
}

Десериализация – точно также руками в лоб.

Любая попытка «автоматизировать» этот предельно тупой подход – через рефлексию там или ещё как, даже на жаве (где дохерища всяких говнорешений, сериализующих через рефлексию) приведёт лишь к усложнению, утяжелению засериализованного формата, и потере твоего контроля над ситуацией. Зуб даю.