コード例 #1
0
ファイル: Ground.cs プロジェクト: stackprobe/Post2
        private static void DeleteDeadData()
        {
            FileData[] files = Directory.GetFiles(Consts.DATA_DIR).Select(v => new FileData()
            {
                File          = v,
                WroteDateTime = DateTimeToSec.ToDateTime(new FileInfo(v).LastWriteTime),
            })
                               .ToArray();

            Array.Sort(files, (a, b) =>
            {
                int ret = LongTools.Comp(a.WroteDateTime, b.WroteDateTime);

                if (ret != 0)
                {
                    return(ret);
                }

                ret = StringTools.CompIgnoreCase(a.File, b.File);
                return(ret);
            });

            long currDateTime   = DateTimeToSec.Now.GetDateTime();
            long expireDateTime = DateTimeToSec.ToDateTime(DateTimeToSec.ToSec(currDateTime) - Consts.DATA_LIFESPAN_SEC);

            for (int index = 0; index < files.Length; index++)
            {
                bool deleting = index + Consts.DATA_NUM_MAX < files.Length || files[index].WroteDateTime < expireDateTime;

                if (deleting == false)
                {
                    break;
                }

                FileTools.Delete(files[index].File);
            }
        }
コード例 #2
0
 private int Comp_CSPrice(CSPrice a, CSPrice b)
 {
     return(LongTools.Comp(a.DateTime, b.DateTime));
 }
コード例 #3
0
ファイル: Slimdown.cs プロジェクト: stackprobe/Post2
        public void Perform()
        {
            Console.WriteLine("Slimdown_Start");
            //Console.WriteLine("Slimdown_Start, DY: " + this.DiskYellowFlag); // del @ 2020.4.1

            long currDateTime = DateTimeToSec.Now.GetDateTime();

            foreach (LiteGroup liteGroup in new GroupBundle().LiteGroups)
            {
                Group group = liteGroup.GetGroup();

                List <UploadedFile> upFiles = new List <UploadedFile>();
                long total = 0L;

                foreach (string file in group.GetFileBundle().Files)
                {
                    FileInfo info = new FileInfo(file);

                    UploadedFile upFile = new UploadedFile()
                    {
                        FilePath      = file,
                        Size          = info.Length,
                        WroteDateTime = DateTimeToSec.ToDateTime(info.LastWriteTime),
                    };

                    upFiles.Add(upFile);
                    total += upFile.Size;
                }
                upFiles.Sort((a, b) =>
                {
                    int ret = VariantTools.Comp(a, b, v =>
                                                StringTools.EndsWithIgnoreCase(v.FilePath, Consts.TMP_FILE_SUFFIX) &&
                                                DateTimeToSec.ToSec(v.WroteDateTime) + 3600 <= DateTimeToSec.ToSec(currDateTime) ? 0 : 1); // "1時間以上放置された作業ファイル" を先に

                    if (ret != 0)
                    {
                        return(ret);
                    }

                    ret = LongTools.Comp(a.WroteDateTime, b.WroteDateTime);                     // 古い順
                    return(ret);
                });

                while (1 <= upFiles.Count && (Consts.FILE_NUM_MAX < this.UploadedFiles.Count || group.GroupTotalFileSizeMax < total))
                {
                    UploadedFile upFile = upFiles[0];

                    upFiles.RemoveAt(0);

                    upFile.Delete();
                    total -= upFile.Size;
                }
                this.UploadedFiles.AddRange(upFiles);
                this.TotalSize += total;
            }
            this.UploadedFiles.Sort((a, b) => LongTools.Comp(a.WroteDateTime, b.WroteDateTime));             // 古い順

            while (1 <= this.UploadedFiles.Count && Consts.TOTAL_FILE_SIZE_MAX < this.TotalSize)
            {
                UploadedFile upFile = this.UploadedFiles[0];

                this.UploadedFiles.RemoveAt(0);

                FileTools.Delete(upFile.FilePath);
                this.TotalSize -= upFile.Size;
            }
#if false // del @ 2020.4.1
            if (this.DiskYellowFlag)
            {
                int count = this.UploadedFiles.Count;

                // 10ファイル以上 -> 10%
                // 1~9ファイル -> 1
                // 0ファイル -> 0
                //
                if (10 <= count)
                {
                    count /= 10;
                }
                else
                {
                    count = Math.Min(1, count);
                }

                for (int index = 0; index < count; index++)
                {
                    UploadedFile upFile = this.UploadedFiles[index];

                    upFile.Delete();
                }
            }
#endif
            Console.WriteLine("Slimdown_End");
        }