Ejemplo n.º 1
0
        /// <summary>
        ///    Constructs and initializes a new instance of <see
        ///    cref="Page" /> with a specified header and packets.
        /// </summary>
        /// <param name="packets">
        ///    A <see cref="ByteVectorCollection" /> object containing
        ///    packets to use for the new instance.
        /// </param>
        /// <param name="header">
        ///    A <see cref="PageHeader"/> object to use as the header of
        ///    the new instance.
        /// </param>
        /// <exception cref="ArgumentNullException">
        ///    <paramref name="packets" /> is <see langword="null" />.
        /// </exception>
        public Page(ByteVectorCollection packets, PageHeader header)
            : this(header)
        {
            if (packets == null)
            {
                throw new ArgumentNullException("packets");
            }

            this.packets = new ByteVectorCollection(packets);

            var packet_sizes = new List <int>();

            // Build a page from the list of packets.
            foreach (var v in packets)
            {
                packet_sizes.Add(v.Count);
            }

            header.PacketSizes = packet_sizes.ToArray();
        }
Ejemplo n.º 2
0
        /// <summary>
        ///    Constructs and initializes a new instance of <see
        ///    cref="PageHeader" /> by copying the values from another
        ///    instance, offsetting the page number and applying new
        ///    flags.
        /// </summary>
        /// <param name="original">
        ///    A <see cref="PageHeader"/> object to copy the values
        ///    from.
        /// </param>
        /// <param name="offset">
        ///    A <see cref="uint"/> value specifying how much to offset
        ///    the page sequence number in the new instance.
        /// </param>
        /// <param name="flags">
        ///    A <see cref="PageFlags"/> value specifying the flags to
        ///    use in the new instance.
        /// </param>
        public PageHeader(PageHeader original, uint offset,
                          PageFlags flags)
        {
            version = original.version;
            Flags   = flags;
            absolute_granular_position =
                original.absolute_granular_position;
            StreamSerialNumber   = original.StreamSerialNumber;
            page_sequence_number =
                original.page_sequence_number + offset;
            Size         = original.Size;
            data_size    = original.data_size;
            packet_sizes = new List <int>();

            if (page_sequence_number == 0 &&
                (flags & PageFlags.FirstPacketContinued) == 0)
            {
                Flags |= PageFlags.FirstPageOfStream;
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 ///    Constructs and intializes a new instance of <see
 ///    cref="Page" /> with a specified header and no packets.
 /// </summary>
 /// <param name="header">
 ///    A <see cref="PageHeader"/> object to use as the header of
 ///    the new instance.
 /// </param>
 protected Page(PageHeader header)
 {
     Header  = header;
     packets = new ByteVectorCollection();
 }