Hi,
 
I have a more fundamental question/inquiry about the serialization library.
 
What I want to do is to use the serialization library to send classes over a socket. Even though archives are not supposed to be used at streams I figured that it should be possible to create a oarchive on the sender side, create a iarchive on the receiver side, and use these for multiple, successive write / read operations in block mode.
In order to test that assumption I created a test program to see if it would be possible. Here the pseudo code:
 
 
void sync_streams(stringstream &os, stringstream& os)
{
  // write data from one sting stream to the other
  // this emulates sending the data on a socket
 
  int rd_avail = os.tellp() - os.tellg();
  os.read(buffer, rd_avail);
  is.write(buffer, rd_avail);
}
 
stringstream os, is;
 
boost::archive::text_oarchive oa(os);
sync_streams(os, is); // sync preamble
boost::archive::text_iarchive ia(is);
 
oa << object1;
sync_streams(os, is); // sync object block
ia >> rdObject1;
 
oa << object2;
sync_streams(os, is); // sync object block
ia >> rdObject2;
 
 
While I made this work, I wonder if it is a hack or if this is a valid use case for the serialization library. I looked at the asio projects example/source, there it was done by using a full archive for each object to be transmitted. Sending an archive every time seems a bit expensive too me, since a full preamble is sent everytime and I would loose all the pointer tracking and other great features from the serialization library.
 
Regards,
 
Gerd