forked from Ovahlord/DB2StructGenerator
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDBDStorage.cs
More file actions
40 lines (36 loc) · 1.69 KB
/
DBDStorage.cs
File metadata and controls
40 lines (36 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System.Collections.Concurrent;
using DBDefsLib;
namespace DB2StructGenerator
{
public class DBDStorage
{
public ConcurrentDictionary<string /*DB2Name*/, Tuple<Structs.DBDefinition, Structs.VersionDefinitions>> Definitions { get; private set; } = [];
public void ReadDefinitions(int forBuildNumber)
{
Parallel.ForEach(Directory.GetFiles("definitions"), fileName =>
{
try
{
DBDReader reader = new();
Structs.DBDefinition definition = reader.Read(File.OpenRead(fileName));
foreach (Structs.VersionDefinitions versionDef in definition.versionDefinitions.AsSpan())
{
if (versionDef.builds.Any(b => b.build == forBuildNumber) || versionDef.buildRanges.Any(br => (forBuildNumber >= br.minBuild.build && forBuildNumber <= br.maxBuild.build)))
{
if (Definitions.TryAdd(Path.GetFileNameWithoutExtension(fileName), new Tuple<Structs.DBDefinition, Structs.VersionDefinitions>(definition, versionDef)))
{
Console.WriteLine($"Found {Path.GetFileNameWithoutExtension(fileName)}.db2 definition for build {forBuildNumber}");
break;
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
});
Console.WriteLine($"\nSuccessfully loaded {Definitions.Count} definitions for build {forBuildNumber}\n");
}
}
}