Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Собственно это то, как оно будет реализовано на нижнем уровне — скидываем один буфер, в хэндлере async_write — запись следующего и так далее.
EP>Вопрос в том, как это сделать в удобном виде, а не в рукопашку раскладывать сериализацию каждой структуры на хэндлеры-continutaions.
как вариант — написать обертку над yas::*_oarchive:
struct my_oarchive {
template<typename T>
my_oarchive& operator& (const T &o) {
yas::*_oarchive::operator& (o);
yield();
return *this;
}
};
EP>Меня же интересует — существуют ли какие-нибудь другие удобные способы?
мне такие не известны. если найдешь — расскажи плиз.
EP>Нет, изменение дерева не происходит.
так если у тебя неизменяемый объект — то что мешает таки реализовать свой ostream класс, и в нем, когда его внутренний буфер достигает предельного размера — отсылать собранные данные, и снова заполнять буфер следующими данными?
чтоб не было бауз в использовании сети — завести два буфера: первый отдаешь на отправку, второй — для сериализации в него. в хендлере отправки данных переключаешь буфера — второй на отправку, а первый для сериализации.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)