4) Implement the BERVisitor and make this the default migration protocol.
Most of the work will be in 1), though with the implementation in this series
we should be able to do it incrementally. I'm not sure if the best approach is
doing the mechanical phase 1 conversion, then doing phase 2 sometime after 4),
doing phase 1 + 2 as part of 1), or just doing VMState conversions which gives
basically the same capabilities as phase 1 + 2.
Thoughts?
Is anyone working on this? If not I may give it a shot (tomorrow++) for
at least some of the primitives... for enabling vNVRAM metadata of
course. Indefinite length encoding of constructed data types I suppose
won't be used otherwise the visitor interface seems wrong for parsing
and skipping of extra data towards the end of a structure if version n
wrote the stream and appended some of its version n data and now version
m < n is trying to read the struct and needs to skip the version [m+1, n
] data fields ... in that case the de-serialization of the stream should
probably be stream-driven rather than structure-driven.
Stefan