コード例 #1
0
        /// <summary>
        /// Serializes to the given stream.
        /// </summary>
        public long Serialize(Stream stream)
        {
            var position = stream.Position;

            stream.WriteByte(2); // write the version #.

            // write agencies attributes.
            _agencyAttributes.Serialize(new LimitedStream(stream));

            // write connections db.
            _connectionsDb.Serialize(stream);

            // write schedules db.
            _schedulesDb.Serialize(stream);

            // write stop attributes.
            _stopAttributes.Serialize(new LimitedStream(stream));

            // write stop db.
            _stopsDb.Serialize(stream);

            // write transfer db's.
            stream.WriteByte((byte)_transfersDbs.Count);
            foreach (var transferDb in _transfersDbs)
            {
                stream.WriteWithSize(transferDb.Key);
                transferDb.Value.Serialize(stream);
            }

            // write trip attributes.
            _tripAttributes.Serialize(new LimitedStream(stream));

            // write trips db.
            _tripsDb.Serialize(stream);

            // write shapes db.
            _shapesDb.Serialize(stream);

            return(stream.Position - position);
        }