private ChangesetLoader.Changeset _processChunk(Stream r, XmlSerializer s) { /* i would need to chunk this up. */ MemoryStream strm = new MemoryStream(); byte[] b = new byte[1]; bool seen = false; byte[] zero = new byte[] { 0 }; while (0 < r.Read(b, 0, 1)) { if (seen) { if (b[0] == 0) { break; } else { /* write the zero byte we found back out to the stream * before we process the byte we just got. */ strm.Write(zero, 0, zero.Length); } } if (b[0] == 0) { seen = true; } else { strm.Write(b, 0, 1); } } strm.Flush(); ChangesetLoader.Changeset c = null; if (strm.Length > 0) { strm.Seek(0, System.IO.SeekOrigin.Begin); c = s.Deserialize(strm) as ChangesetLoader.Changeset; } return(c); }
private void _loadFile(string filename) { ChangesetCont changesets = new ChangesetCont(); using (Stream r = new FileStream(filename, FileMode.Open, FileAccess.Read)) { XmlSerializer s = new XmlSerializer(typeof(ChangesetLoader.Changeset)); ChangesetLoader.Changeset cs = null; do { cs = _processChunk(r, s); if (cs != null) { changesets.insert(cs); } } while(cs != null); r.Close(); } _load(changesets); }