Example #1
0
        private BinaryWriter writer = null; // реализует двочную запись данных

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Инициализирует новый экземпляр класса
        /// </summary>
        public File()
        {
            stamps = new Stamp[COUNT_STAMPS];
            for (int index = 0; index < COUNT_STAMPS; index++)
            {
                stamps[index] = new Stamp();
            }

            block_size = BLOCK_SIZE;
            area_size = DATA_AREA_SIZE;

            stamp_offset = BASE_STAMPS_OFFSET;
            data_offset = BASE_DATA_OFFSET;

            p_count = 0;
            default_file_size = (long)Math.Pow(1024, 3);
        }
Example #2
0
        /// <summary>
        /// Инициализирует новый экземпляр класса
        /// </summary>
        public File()
        {
            stamps = new Stamp[COUNT_STAMPS];
            for (int index = 0; index < COUNT_STAMPS; index++)
            {
                stamps[index] = new Stamp();
            }

            block_size = BLOCK_SIZE;
            area_size  = DATA_AREA_SIZE;

            stamp_offset = BASE_STAMPS_OFFSET;
            data_offset  = BASE_DATA_OFFSET;

            p_count           = 0;
            default_file_size = (long)Math.Pow(1024, 3);
        }
Example #3
0
        protected long block_offset;            // смещение по которому выполнять запись блока данных

        /// <summary>
        /// Выполнить инициализацию смещений
        /// </summary>
        private void InitializeOffsets()
        {
            if (Stamps != null && Stamps.Length > 0)
            {
                List <Stamp> stamps = new List <Stamp>();
                foreach (var stam in Stamps)
                {
                    if (stam.DateTime > 0)
                    {
                        if (stam.F_Offset == stam.S_Offset)
                        {
                            stamps.Add(stam);
                        }
                    }
                }

                if (stamps.Count > 0)
                {
                    int   index = 0;
                    Stamp max   = stamps[0];

                    for (int i = 1; i < stamps.Count; i++)
                    {
                        if (stamps[i].DateTime >= max.DateTime)
                        {
                            index = i;
                            max   = stamps[i];

                            max.index = i;
                        }
                    }

                    stam_index   = index;
                    block_offset = max.F_Offset;

                    CalculateBlockOffset();
                }
                else
                {
                    stam_index   = 0;
                    block_offset = DataOffset;
                }
            }
        }