protected Storage(string baseName) { BaseName = FileSafety.FilenameStrip(baseName); BasePath = LocateBasePath(); if (BasePath == null) { throw new NullReferenceException(nameof(BasePath)); } }
protected override void Complete(Exception e = null) { ResponseStream?.Close(); if (e != null) { FileSafety.FileDelete(Filename); } base.Complete(e); }
/// <summary> /// Create all required <see cref="FileInfo"/>s for the provided archive, adding them to the global file store. /// </summary> private List <TFileModel> createFileInfos(ArchiveReader reader, FileStore files) { var fileInfos = new List <TFileModel>(); // import files to manager foreach (string file in reader.Filenames) { using (Stream s = reader.GetStream(file)) fileInfos.Add(new TFileModel { Filename = FileSafety.PathStandardise(file), FileInfo = files.Add(s) }); } return(fileInfos); }
private void handleEvent(string line) { string[] split = line.Split(','); EventType type; if (!Enum.TryParse(split[0], out type)) { throw new InvalidDataException($@"Unknown event type: {split[0]}"); } switch (type) { case EventType.Background: string bgFilename = split[2].Trim('"'); beatmap.BeatmapInfo.Metadata.BackgroundFile = FileSafety.PathStandardise(bgFilename); break; case EventType.Video: string videoFilename = split[2].Trim('"'); beatmap.BeatmapInfo.Metadata.VideoFile = FileSafety.PathStandardise(videoFilename); break; case EventType.Break: double start = getOffsetTime(Parsing.ParseDouble(split[1])); var breakEvent = new BreakPeriod { StartTime = start, EndTime = Math.Max(start, getOffsetTime(Parsing.ParseDouble(split[2]))) }; if (!breakEvent.HasEffect) { return; } beatmap.Breaks.Add(breakEvent); break; } }
/// <summary> /// Deletes log file from disk. /// </summary> /// <param name="lastLogSuffix">If specified, creates a copy of the last log file with specified suffix.</param> public void Clear(string lastLogSuffix = null) { if (Filename == null) { return; } backgroundScheduler.Add(delegate { if (!string.IsNullOrEmpty(lastLogSuffix)) { FileSafety.FileMove(Filename, Filename.Replace(@".log", $@"_{lastLogSuffix}.log")); } else { FileSafety.FileDelete(Filename); } }); addHeader(); }
protected GameHost(string gameName = @"") { toolkit = Toolkit.Init(); AppDomain.CurrentDomain.UnhandledException += exceptionHandler; Trace.Listeners.Clear(); Trace.Listeners.Add(new ThrowingTraceListener()); FileSafety.DeleteCleanupDirectory(); Dependencies.CacheAs(this); Dependencies.CacheAs(Storage = GetStorage(gameName)); Name = gameName; Logger.GameIdentifier = gameName; threads = new List <GameThread> { (DrawThread = new DrawThread(DrawFrame) { OnThreadStart = DrawInitialize, }), (UpdateThread = new UpdateThread(UpdateFrame) { OnThreadStart = UpdateInitialize, Monitor = { HandleGC = true }, }), (InputThread = new InputThread(null)), //never gets started. }; var path = Path.GetDirectoryName(FullPath); if (path != null) { Environment.CurrentDirectory = path; } }
protected BasicStorage(string baseName) { BaseName = FileSafety.FilenameStrip(baseName); }
private static string cleanFilename(string path) => FileSafety.PathStandardise(path.Trim('\"'));
public override void Delete(string path) => FileSafety.FileDelete(GetFullPath(path));
public override void Delete(string path) => FileSafety.FileDelete(GetUsablePathFor(path));
private string cleanFilename(string path) => FileSafety.PathSanitise(path.Trim('\"'));
private void handleGeneral(string line) { var pair = SplitKeyVal(line); var metadata = beatmap.BeatmapInfo.Metadata; switch (pair.Key) { case @"AudioFilename": metadata.AudioFile = FileSafety.PathStandardise(pair.Value); break; case @"AudioLeadIn": beatmap.BeatmapInfo.AudioLeadIn = Parsing.ParseInt(pair.Value); break; case @"PreviewTime": metadata.PreviewTime = getOffsetTime(Parsing.ParseInt(pair.Value)); break; case @"Countdown": beatmap.BeatmapInfo.Countdown = Parsing.ParseInt(pair.Value) == 1; break; case @"SampleSet": defaultSampleBank = (LegacySampleBank)Enum.Parse(typeof(LegacySampleBank), pair.Value); break; case @"SampleVolume": defaultSampleVolume = Parsing.ParseInt(pair.Value); break; case @"StackLeniency": beatmap.BeatmapInfo.StackLeniency = Parsing.ParseFloat(pair.Value); break; case @"Mode": beatmap.BeatmapInfo.RulesetID = Parsing.ParseInt(pair.Value); switch (beatmap.BeatmapInfo.RulesetID) { case 0: parser = new Rulesets.Objects.Legacy.Osu.ConvertHitObjectParser(getOffsetTime(), FormatVersion); break; case 1: parser = new Rulesets.Objects.Legacy.Taiko.ConvertHitObjectParser(getOffsetTime(), FormatVersion); break; case 2: parser = new Rulesets.Objects.Legacy.Catch.ConvertHitObjectParser(getOffsetTime(), FormatVersion); break; case 3: parser = new Rulesets.Objects.Legacy.Mania.ConvertHitObjectParser(getOffsetTime(), FormatVersion); break; } break; case @"LetterboxInBreaks": beatmap.BeatmapInfo.LetterboxInBreaks = Parsing.ParseInt(pair.Value) == 1; break; case @"SpecialStyle": beatmap.BeatmapInfo.SpecialStyle = Parsing.ParseInt(pair.Value) == 1; break; case @"WidescreenStoryboard": beatmap.BeatmapInfo.WidescreenStoryboard = Parsing.ParseInt(pair.Value) == 1; break; } }
public void BeginUpdaterSync() { while (true) { var beatmapSets = _factory.Get().BeatmapSet.Where(x => !x.Disabled) .Where( x => x.LastChecked != null && (( ( x.RankedStatus == BeatmapSetOnlineStatus.None || x.RankedStatus == BeatmapSetOnlineStatus.Graveyard || x.RankedStatus == BeatmapSetOnlineStatus.Pending || x.RankedStatus == BeatmapSetOnlineStatus.Ranked || x.RankedStatus == BeatmapSetOnlineStatus.Loved ) && (x.LastChecked.Value + TimeSpan.FromDays(30)) .Subtract(DateTime.Now).TotalMilliseconds < 0 ) || ( ( x.RankedStatus == BeatmapSetOnlineStatus.Qualified || x.RankedStatus == BeatmapSetOnlineStatus.WIP ) && (x.LastChecked.Value + TimeSpan.FromDays(1)) .Subtract(DateTime.Now).TotalMilliseconds < 0 ) || ( ( x.RankedStatus == BeatmapSetOnlineStatus.Approved ) && (x.LastChecked.Value + TimeSpan.FromDays(90)) .Subtract(DateTime.Now).TotalMilliseconds < 0 )) ); foreach (var bmSet in beatmapSets.ToList()) { bmSet.ChildrenBeatmaps = _factory.Get().Beatmaps.Where(x => x.ParentSetId == bmSet.SetId).ToList(); var setRequest = new GetBeatmapSetRequest(bmSet.SetId); _rl.Limit(); setRequest.Perform(_apiAccess); Logger.LogPrint("Updating BeatmapSetId " + bmSet.SetId); var setInfo = setRequest.Result.ToBeatmapSet(_store); var newBm = BeatmapSet.FromBeatmapSetInfo(setInfo); using var db = _factory.GetForWrite(); var hasChanged = false; foreach (var cb in newBm.ChildrenBeatmaps) { var fInfo = _bmDl.Download(cb); var ha = _cFactory.Get().CacheBeatmaps.Where(b => b.Hash == fInfo.Hash).Select(f => f.FileMd5).FirstOrDefault(); cb.FileMd5 = ha; db.Context.Entry(cb).State = Microsoft.EntityFrameworkCore.EntityState.Modified; db.Context.Beatmaps.Update(cb); if (bmSet.ChildrenBeatmaps.Any(x => x.FileMd5 == ha)) { continue; } hasChanged = true; } if (newBm.ChildrenBeatmaps.Count > bmSet.ChildrenBeatmaps.Count) { hasChanged = true; } var bmFileId = newBm.SetId.ToString("x8"); var bmFileIdNoVid = newBm.SetId.ToString("x8") + "_novid"; if (hasChanged) { _storage.GetStorageForDirectory("cache").Delete(bmFileId); _storage.GetStorageForDirectory("cache").Delete(bmFileIdNoVid); _search.DeleteBeatmap(newBm.SetId); _search.IndexBeatmap(newBm); } db.Context.Entry(newBm).State = Microsoft.EntityFrameworkCore.EntityState.Modified; db.Context.BeatmapSet.Update(newBm); FileSafety.DeleteCleanupDirectory(); } } }