- add: Service think
This commit is contained in:
118
Nebula.Launcher/Utils/Manifest.cs
Normal file
118
Nebula.Launcher/Utils/Manifest.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace Nebula.Launcher.Utils;
|
||||
|
||||
public class ManifestReader : StreamReader
|
||||
{
|
||||
public const int BufferSize = 128;
|
||||
|
||||
public ManifestReader(Stream stream) : base(stream)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(Stream stream, bool detectEncodingFromByteOrderMarks) : base(stream,
|
||||
detectEncodingFromByteOrderMarks)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(Stream stream, Encoding encoding) : base(stream, encoding)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks) : base(stream,
|
||||
encoding, detectEncodingFromByteOrderMarks)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize) :
|
||||
base(stream, encoding, detectEncodingFromByteOrderMarks, bufferSize)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(Stream stream, Encoding? encoding = null, bool detectEncodingFromByteOrderMarks = true,
|
||||
int bufferSize = -1, bool leaveOpen = false) : base(stream, encoding, detectEncodingFromByteOrderMarks,
|
||||
bufferSize, leaveOpen)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(string path) : base(path)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(string path, bool detectEncodingFromByteOrderMarks) : base(path,
|
||||
detectEncodingFromByteOrderMarks)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(string path, FileStreamOptions options) : base(path, options)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(string path, Encoding encoding) : base(path, encoding)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks) : base(path, encoding,
|
||||
detectEncodingFromByteOrderMarks)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks, int bufferSize) : base(
|
||||
path, encoding, detectEncodingFromByteOrderMarks, bufferSize)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public ManifestReader(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks,
|
||||
FileStreamOptions options) : base(path, encoding, detectEncodingFromByteOrderMarks, options)
|
||||
{
|
||||
ReadManifestVersion();
|
||||
}
|
||||
|
||||
public string ManifestVersion { get; private set; } = "";
|
||||
public int CurrentId { get; private set; }
|
||||
|
||||
private void ReadManifestVersion()
|
||||
{
|
||||
ManifestVersion = ReadLine();
|
||||
}
|
||||
|
||||
public RobustManifestItem? ReadItem()
|
||||
{
|
||||
var line = ReadLine();
|
||||
if (line == null) return null;
|
||||
var splited = line.Split(" ");
|
||||
return new RobustManifestItem(splited[0], line.Substring(splited[0].Length + 1), CurrentId++);
|
||||
}
|
||||
|
||||
public bool TryReadItem([NotNullWhen(true)] out RobustManifestItem? item)
|
||||
{
|
||||
item = ReadItem();
|
||||
return item != null;
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
CurrentId = 0;
|
||||
}
|
||||
|
||||
public new void DiscardBufferedData()
|
||||
{
|
||||
base.DiscardBufferedData();
|
||||
CurrentId = 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user