Пример #1
0
        /// <summary> Outputs all block changes by the given players. </summary>
        /// <remarks> You must lock using Locker.AccquireRead() **before** entering this method. </remarks>
        /// <returns> whether an entry before start time was reached. </returns>
        public bool FindChangesBy(int[] ids, DateTime start, DateTime end,
                                  out Vec3U16 dims, Action <BlockDBEntry> output)
        {
            int startDelta = ClampDelta(start.Subtract(Epoch));
            int endDelta   = ClampDelta(end.Subtract(Epoch));

            dims = Dims;
            if (FindInMemoryBy(ids, startDelta, endDelta, output))
            {
                return(true);
            }

            if (!File.Exists(FilePath))
            {
                return(false);
            }
            using (Stream s = OpenRead()) {
                BlockDBFile format = BlockDBFile.ReadHeader(s, out dims);
                return(format.FindChangesBy(s, ids, startDelta, endDelta, output));
            }
        }