public int GetSaveLength() { int size = ContentSizeCompressed != 0 ? 56 : 48; if (Fragments != null) { size += DataFragment.GetSaveLength(Fragments); } return(size); }
public static byte[] SaveFragments(DataFragment[] fragments) { // Sum up the expected # of bytes needed. As compressed fragments have been compacted they have been removed - so add two bytes for each compressed fragment to compensate. int expectedLength = fragments.Sum(s => s.ThisObjectLength + (s.IsCompressed ? 2 : 0)); int saveLength = DataFragment.GetSaveLength(fragments); Debug.Assert(expectedLength == saveLength); byte[] data = new byte[saveLength + 1]; DataFragment.Save(data, 0, fragments); return(data); }