From: Matthias Troyer (troyer_at_[hidden])
Date: 2002-11-20 09:14:57


On Wednesday, November 20, 2002, at 01:42 PM, Gennadiy Rozental wrote:

> [Issue 3] Library seems to hardcode important part of functionality
> that
> users may want to overwrite. Here I refer in most part to
> archive/object
> preamble.

> Major [Issue 3]: Submitted library is somewhat limited in a means to
> modify
> what is written in archive header (I can change it but I will need to
> supply
> full fledged specific archive cause currently this logic is in
> constructor).
> And even more limited in a means to modify object header together with
> logic
> bound to it. Let me give couple examples.
>
> 1. Serialization signature is 22 bytes. Let say I am serializing
> messages
> into binary format for sending them through network. Size of my
> serialized
> code is 10 bytes. I do not believe I could accept 22 bytes of
> "signature
> information". The same about the version. I may or may not be
> interested in
> versioning of serialization system.
> 2. Binary archive constructor save some "guard" information. I may or
> may
> not want to do this. Or I may want to be even more careful.
> 3. Object save/load function contains pretty expensive logic for
> making sure
> that object is stored/loaded only once. If for any reason
> (performance) I
> could not afford constant searching but have external knowledge that
> all
> objects are different I may want to skip lookup phase.
> 4. Let say I am sending data by contract. It could be fixed contract
> in
> external file loaded during initialization or dynamic one sent before
> sending real data. The purpose id to save the bandwidth and eliminate
> all
> object/class ids from serialized stream. What should I do?

After playing some more and trying to read my old "legacy"
serialization files which do not contain any such preamble I want to
support Gennadiy's point. I would like for my archive classes (e.g. to
read legacy archive formats) to override these preambles.

Matthias