tgstation-server
The /tg/station 13 server suite
DmbProvider.cs
Go to the documentation of this file.
1 using System;
2 using Tgstation.Server.Host.IO;
4 
5 namespace Tgstation.Server.Host.Components.Compiler
6 {
8  sealed class DmbProvider : IDmbProvider
9  {
11  public string DmbName => String.Concat(CompileJob.DmeName, DreamMaker.DmbExtension);
12 
14  public string PrimaryDirectory => ioManager.ResolvePath(ioManager.ConcatPath(CompileJob.DirectoryName.ToString(), DreamMaker.ADirectoryName));
15 
17  public string SecondaryDirectory => ioManager.ResolvePath(ioManager.ConcatPath(CompileJob.DirectoryName.ToString(), DreamMaker.BDirectoryName));
18 
21 
25  public CompileJob CompileJob { get; }
26 
34  Action onDispose;
35 
42  public DmbProvider(CompileJob compileJob, IIOManager ioManager, Action onDispose)
43  {
44  CompileJob = compileJob ?? throw new ArgumentNullException(nameof(compileJob));
45  this.ioManager = ioManager ?? throw new ArgumentNullException(nameof(ioManager));
46  this.onDispose = onDispose ?? throw new ArgumentNullException(nameof(onDispose));
47  }
48 
50  public void Dispose() => onDispose?.Invoke();
51 
53  public void KeepAlive() => onDispose = null;
54  }
55 }
string DmeName
The .dme file used for compilation
Definition: CompileJob.cs:20
const string BDirectoryName
Name of the secondary directory used for compilation
Definition: DreamMaker.cs:30
const string ADirectoryName
Name of the primary directory used for compilation
Definition: DreamMaker.cs:26
DmbProvider(CompileJob compileJob, IIOManager ioManager, Action onDispose)
Construct a DmbProvider
Definition: DmbProvider.cs:42
Action onDispose
The Action to run when Dispose is called
Definition: DmbProvider.cs:34
const string DmbExtension
Extension for .dmbs
Definition: DreamMaker.cs:34
readonly IIOManager ioManager
The IIOManager for the DmbProvider
Definition: DmbProvider.cs:30
Guid DirectoryName
The Game folder the results were compiled into
Definition: CompileJob.cs:32
Provides absolute paths to the latest compiled .dmbs
Definition: IDmbProvider.cs:9
Interface for using filesystems
Definition: IIOManager.cs:11
RevisionInformation RevisionInformation
See Api.Models.CompileJob.RevisionInformation
Definition: CompileJob.cs:24