Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }