Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Configuration performance improvements #21

Merged
merged 6 commits into from
Jun 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file modified .gitattributes
100755 → 100644
Empty file.
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ jobs:
- name: Move to Checkout Path
run: |
mkdir -p /_/_work/${{ github.repository }}/${{ github.sha }}
mv * /_/_work/${{ github.repository }}/${{ github.sha }}
(shopt -s dotglob; mv * /_/_work/${{ github.repository }}/${{ github.sha }})

- name: Setup .NET 6
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
dotnet-version: 8.0.x

# Build
- name: Restore NuGet Packages
Expand Down
Empty file modified CODEOWNERS
100755 → 100644
Empty file.
Empty file modified CONTRIBUTING.md
100755 → 100644
Empty file.
29 changes: 26 additions & 3 deletions src/Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,38 @@
<Configurations>debug;release</Configurations>
</PropertyGroup>

<Target Name="AddGitMetadaAssemblyAttributes"
BeforeTargets="GetAssemblyAttributes">

<!--Executes
the Git Commands to get the Hash and Branch-->
<Exec Command="git rev-parse HEAD" ConsoleToMSBuild="true"
StandardOutputImportance="low" IgnoreExitCode="true" Condition=" '$(CommitHash)' == '' " WorkingDirectory="$(SolutionDir)">
<Output TaskParameter="ConsoleOutput" PropertyName="CommitHash" />
</Exec>
<Exec Command="git rev-parse --short HEAD" ConsoleToMSBuild="true"
StandardOutputImportance="low" IgnoreExitCode="true" Condition=" '$(CommitShortHash)' == '' " WorkingDirectory="$(SolutionDir)">
<Output TaskParameter="ConsoleOutput" PropertyName="CommitShortHash" />
</Exec>
<Exec Command="git rev-parse --abbrev-ref HEAD" ConsoleToMSBuild="true"
StandardOutputImportance="low" IgnoreExitCode="true" Condition=" '$(CommitBranch)' == '' " WorkingDirectory="$(SolutionDir)">
<Output TaskParameter="ConsoleOutput" PropertyName="CommitBranch" />
</Exec>

<ItemGroup>
<AssemblyMetadata Include="BuildTimestamp" Value="$([System.DateTime]::UtcNow.ToString(yyyy-MM-ddTHH:mm:ssK))" />
<AssemblyMetadata Condition=" $(CommitHash) != '' " Include="GitHash" Value="$(CommitHash)" />
<AssemblyMetadata Condition=" $(CommitBranch) != '' " Include="GitBranch" Value="$(CommitBranch)" />
</ItemGroup>
</Target>

<PropertyGroup Label="PackageMetadata">
<Company>MFDLABS</Company>
<Copyright>Copyright © $(Company) $([System.DateTime]::Now.ToString(`yyyy`)). All rights reserved.</Copyright>
<Authors>$(Company);Nikita Petko</Authors>

<RepositoryUrl>https://github.com/mfdlabs/grid-bot-libraries</RepositoryUrl>
<RepositoryType>git</RepositoryType>

<VersionPrefix>1.0.4</VersionPrefix>
</PropertyGroup>

<PropertyGroup Label="TestsProperties" Condition="$(MSBuildProjectName.Contains('.Tests'))">
Expand Down Expand Up @@ -59,4 +82,4 @@
<ItemGroup>
<None Include="README.md" Pack="true" PackagePath="" />
</ItemGroup>
</Project>
</Project>
2 changes: 2 additions & 0 deletions src/clients/client-settings-client/ClientSettings.Client.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>HTTP client used to interact with Roblox's Client Settings API Site.</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
Empty file modified src/clients/client-settings-client/ClientSettingsClient.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/clients/thumbnails-client/Thumbnails.Client.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>HTTP client used to interact with Roblox's Thumbnails API Site.</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
2 changes: 2 additions & 0 deletions src/clients/users-client/Users.Client.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>HTTP client used to interact with Roblox's Users API Site.</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
Empty file modified src/clients/users-client/UsersClient.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/configuration/configuration/Configuration.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>C# adaptation for @mfdlabs/environment.</Description>

<Version>1.0.5</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
84 changes: 66 additions & 18 deletions src/configuration/configuration/Implementation/VaultProvider.cs
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,10 @@ private static TimeSpan _defaultRefreshInterval
}
}

private static readonly string[] _propertyNamesIgnoredForApplyCurrent = new[]
private static readonly HashSet<string> _propertyNamesIgnored = new()
{
nameof(Mount),
nameof(Path)
nameof(Path),
};

private static readonly ConcurrentBag<VaultProvider> _providers = new();
Expand Down Expand Up @@ -83,7 +83,7 @@ protected override void SetRawValue<T>(string variable, T value)
{
if (_client == null) return;

_logger?.Debug("Set value in vault at path '{0}/{1}/{2}'", Mount, Path, variable);
_logger?.Debug("VaultProvider: Set value in vault at path '{0}/{1}/{2}'", Mount, Path, variable);

var realValue = value.ToString();

Expand All @@ -103,7 +103,7 @@ public void ApplyCurrent()
// Build the current from the getters.
var values = GetLatestValues();

_logger?.Debug("Writing secret '{0}/{1}' to Vault!", Mount, Path);
_logger?.Debug("VaultProvider: Writing secret '{0}/{1}' to Vault!", Mount, Path);

_client?.V1.Secrets.KeyValue.V2.WriteSecretAsync(
mountPoint: Mount,
Expand All @@ -121,7 +121,7 @@ private Dictionary<string, object> GetLatestValues()
{
var getters = GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Where(prop => !_propertyNamesIgnoredForApplyCurrent.Contains(prop.Name));
.Where(prop => !_propertyNamesIgnored.Contains(prop.Name));

var newCachedValues = new Dictionary<string, object>();

Expand All @@ -131,7 +131,7 @@ private Dictionary<string, object> GetLatestValues()

try
{
_logger?.Debug("Fetching initial value for {0}.{1}", GetType().Name, getterName);
_logger?.Debug("VaultProvider: Fetching initial value for {0}.{1}", GetType().Name, getterName);

var value = getter.GetGetMethod().Invoke(this, Array.Empty<object>());
var realValue = value?.ToString() ?? string.Empty;
Expand All @@ -143,7 +143,7 @@ private Dictionary<string, object> GetLatestValues()
}
catch (TargetInvocationException ex)
{
_logger?.Warning("Error occurred when fetching getter for '{0}.{1}': {2}", GetType().Name, getterName, ex.InnerException.Message);
_logger?.Debug("VaultProvider: Error occurred when fetching getter for '{0}.{1}': {2}", GetType().Name, getterName, ex.InnerException.Message);

newCachedValues.Add(getterName, string.Empty);
}
Expand All @@ -159,7 +159,7 @@ private Dictionary<string, object> GetLatestValues()
protected VaultProvider(ILogger logger = null)
{
logger ??= Logger.Singleton;

SetLogger(logger);

_logger?.Debug("VaultProvider: Setup for '{0}/{1}' to refresh every '{2}' interval!", Mount, Path, RefreshInterval);
Expand All @@ -186,7 +186,7 @@ private static void RefreshThread()
_staticLogger?.Error(ex);
}
}

Thread.Sleep(RefreshInterval); // SetClient makes DoRefresh call.
}
}
Expand Down Expand Up @@ -214,7 +214,7 @@ private void DoRefresh()
{
if (ex.HttpStatusCode == HttpStatusCode.NotFound)
{
_logger?.Warning("VaultProvider: DoRefresh for secret '{0}/{1}' failed: No secret found!", Mount, Path);
_logger?.Debug("VaultProvider: DoRefresh for secret '{0}/{1}' failed: No secret found!", Mount, Path);

return;
}
Expand All @@ -225,15 +225,52 @@ private void DoRefresh()
}
}

private bool HasProperty(ref string name)
{
var type = GetType();
var getter = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public);

if (getter == null)
{
var propertyName = name;
var property = (from prop in type.GetProperties(BindingFlags.Instance | BindingFlags.Public)
let attrib = prop.GetCustomAttribute<SettingNameAttribute>()
where !_propertyNamesIgnored.Contains(prop.Name) && attrib?.Name == propertyName
select prop).SingleOrDefault();

if (property == null)
{
_logger?.Debug("VaultProvider: Skipping property changed handler for '{0}' because settings provider '{1}' does not define it!", name, this);
_logger?.Warning("{0}: Unknown property '{1}', make sure it is defined in the settings provider or has a appropriate [{2}] attribute!", GetType().Name, name, nameof(SettingNameAttribute));

return false;
}

name = property.Name;
}

return true;
}

private void InvokePropertyChangedForChangedValues(IDictionary<string, object> newValues)
{
if (_cachedValues.Count == 0)
{
foreach (var kvp in newValues)
{
_logger?.Debug("Invoking property changed handler for '{0}'", kvp.Key);
if (_propertyNamesIgnored.Contains(kvp.Key))
{
_logger?.Debug("VaultProvider: Skipping property changed handler for '{0}' as it is a reserved property!", kvp.Key);

continue;
}

var propertyName = kvp.Key;
if (!HasProperty(ref propertyName)) continue;

PropertyChanged?.Invoke(this, new(kvp.Key));
_logger?.Debug("VaultProvider: Invoking property changed handler for '{0}'", propertyName);

PropertyChanged?.Invoke(this, new(propertyName));
}

return;
Expand All @@ -244,9 +281,19 @@ private void InvokePropertyChangedForChangedValues(IDictionary<string, object> n
if (_cachedValues.TryGetValue(kvp.Key, out var value))
if (value.ToString().Equals(kvp.Value.ToString())) continue;

_logger?.Debug("Invoking property changed handler for '{0}'", kvp.Key);
if (_propertyNamesIgnored.Contains(kvp.Key))
{
_logger?.Debug("VaultProvider: Skipping property changed handler for '{0}' as it is a reserved property!", kvp.Key);

continue;
}

var propertyName = kvp.Key;
if (!HasProperty(ref propertyName)) continue;

_logger?.Debug("Invoking property changed handler for '{0}'", propertyName);

PropertyChanged?.Invoke(this, new(kvp.Key));
PropertyChanged?.Invoke(this, new(propertyName));
}
}

Expand All @@ -256,10 +303,11 @@ private void InvokePropertyChangedForChangedValues(IDictionary<string, object> n
/// <inheritdoc cref="BaseProvider.GetRawValue(string, out string)"/>
protected override bool GetRawValue(string key, out string value)
{
value = null;
object v;

if (!_cachedValues.TryGetValue(key, out var v))
return base.GetRawValue(key, out value);
lock (_cachedValues)
if (!_cachedValues.TryGetValue(key, out v))
return base.GetRawValue(key, out value);

if (v is JsonElement element)
value = element.GetString();
Expand All @@ -268,4 +316,4 @@ protected override bool GetRawValue(string key, out string value)

return true;
}
}
}
Empty file.
Empty file modified src/configuration/configuration/Interfaces/IVaultProvider.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/configuration/core/Configuration.Core.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>Helpers for configuration in applications.</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
Empty file modified src/configuration/core/Extensions/ConfigurationExtensions.cs
100755 → 100644
Empty file.
Empty file modified src/configuration/core/Implementation/SingleSetting.cs
100755 → 100644
Empty file.
Empty file modified src/configuration/core/Interfaces/ISingleSetting.cs
100755 → 100644
Empty file.
Empty file modified src/file-system/file-system/ExponentialBackoff.cs
100755 → 100644
Empty file.
Empty file modified src/file-system/file-system/FileLock.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/file-system/file-system/FileSystem.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>File system helpers and more!</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
Empty file modified src/file-system/file-system/FilesHelper.cs
100755 → 100644
Empty file.
Empty file modified src/file-system/file-system/Jitter.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/floodcheckers/core/FloodCheckers.Core.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>Core library for flood checker implementation!</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
Empty file modified src/floodcheckers/core/Implementations/FloodCheckerStatus.cs
100755 → 100644
Empty file.
Empty file.
Empty file modified src/floodcheckers/core/Interfaces/IBasicFloodChecker.cs
100755 → 100644
Empty file.
Empty file modified src/floodcheckers/core/Interfaces/IExpiringFloodChecker.cs
100755 → 100644
Empty file.
Empty file modified src/floodcheckers/core/Interfaces/IFloodChecker.cs
100755 → 100644
Empty file.
Empty file modified src/floodcheckers/core/Interfaces/IFloodCheckerFactory.cs
100755 → 100644
Empty file.
Empty file modified src/floodcheckers/core/Interfaces/IFloodCheckerStatus.cs
100755 → 100644
Empty file.
Empty file.
Empty file modified src/floodcheckers/core/Interfaces/IRetryAfterFloodChecker.cs
100755 → 100644
Empty file.
Empty file modified src/floodcheckers/redis/BaseRedisFloodChecker.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/floodcheckers/redis/FloodCheckers.Redis.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>Library for interacting with Redis based flood checkers!</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
Empty file modified src/floodcheckers/redis/Interfaces/ISettings.cs
100755 → 100644
Empty file.
Empty file.
Empty file modified src/floodcheckers/redis/RedisExpandingWindowFloodChecker.cs
100755 → 100644
Empty file.
Empty file modified src/floodcheckers/redis/RedisRollingWindowFloodChecker.cs
100755 → 100644
Empty file.
Empty file modified src/grid/client/Factories/Lua.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/grid/client/Grid.Client.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>SOAP library shared by grid-server processes!</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
Empty file modified src/grid/commands/Commands/EvictPlayerCommand.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Commands/ExecuteScriptCommand.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Commands/ExecuteScriptGameServerCommand.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Commands/GameServerCommand.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Commands/GridCommand.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Commands/RunMicroProfilerCommand.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Commands/ServerActionCommand.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Commands/SetLimitsCommand.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Commands/ThumbnailCommand.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Enums/ServerActionReason.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Enums/ServerActionType.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Enums/ThumbnailCommandType.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/grid/commands/Grid.Commands.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>Shared library containing models used by grid-servers for specific script execution actions.</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<!-- Embed all Scripts/*.lua files into the assembly -->
Expand Down
Empty file modified src/grid/commands/Scripts/Avatar.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Avatar_R15_Action.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Avatar_R15_Standard.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/BodyPart.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Closeup.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Decal.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Gear.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Hat.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Head.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Mesh.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/MeshPart.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Model.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Package.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Pants.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Place.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Scripts/Shirt.lua
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Settings/EvictPlayerSettings.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Settings/ExecuteScriptGameServerSettings.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Settings/ExecuteScriptSettings.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Settings/GameServerSettings.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Settings/RunMicroProfilerSettings.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Settings/ServerActionSettings.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Settings/SetLimitsSettings.cs
100755 → 100644
Empty file.
Empty file modified src/grid/commands/Settings/ThumbnailSettings.cs
100755 → 100644
Empty file.
1 change: 1 addition & 0 deletions src/grid/port-management/Grid.PortManagement.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<PropertyGroup>
<Description>Shared library for port allocation on grid-servers!</Description>

<Version>1.0.4</Version>
<RootNamespace>Grid</RootNamespace>
</PropertyGroup>

Expand Down
Empty file modified src/grid/port-management/Interfaces/IPortAllocator.cs
100755 → 100644
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<PropertyGroup>
<Description>Shared library for core interaction with grid server processes!</Description>

<Version>1.0.4</Version>
<RootNamespace>Grid</RootNamespace>
</PropertyGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<PropertyGroup>
<Description>Shared library for interaction with Docker based grid server processes!</Description>

<Version>1.0.4</Version>
<RootNamespace>Grid</RootNamespace>
</PropertyGroup>

Expand Down
1 change: 1 addition & 0 deletions src/grid/process-management/Grid.ProcessManagement.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
<PropertyGroup>
<Description>Shared library for allocating grid-server processes!</Description>

<Version>1.0.4</Version>
<RootNamespace>Grid</RootNamespace>
</PropertyGroup>

Expand Down
Empty file modified src/grid/process-management/Helper/ManagedIpHelper.cs
100755 → 100644
Empty file.
Empty file modified src/hashing/hashing/ConsistentHash.cs
100755 → 100644
Empty file.
Empty file modified src/hashing/hashing/ConsistentHashV2.cs
100755 → 100644
Empty file.
Empty file modified src/hashing/hashing/HMACHasher.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/hashing/hashing/Hashing.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>Shared library to help with hashing.</Description>

<Version>1.0.4</Version>
</PropertyGroup>
</Project>
Empty file modified src/hashing/hashing/Interfaces/IPartitionedKeyGenerator.cs
100755 → 100644
Empty file.
Empty file modified src/hashing/hashing/MurmurHash3.cs
100755 → 100644
Empty file.
Empty file modified src/hashing/hashing/PartitionedKeyGenerator.cs
100755 → 100644
Empty file.
Empty file modified src/hashing/hashing/SHA256Hasher.cs
100755 → 100644
Empty file.
Empty file modified src/logging/logging/Enums/LogLevel.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/logging/logging/Logging.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>Shared logging library!</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<PropertyGroup>
Expand Down
Empty file modified src/networking/networking/Implementation/DnsWrapper.cs
100755 → 100644
Empty file.
Empty file modified src/networking/networking/Implementation/IPAddressUtils.cs
100755 → 100644
Empty file.
Empty file modified src/networking/networking/Implementation/IpAddressRange.cs
100755 → 100644
Empty file.
Empty file modified src/networking/networking/Implementation/IpPrefixParser.cs
100755 → 100644
Empty file.
Empty file.
Empty file modified src/networking/networking/Interfaces/IDns.cs
100755 → 100644
Empty file.
Empty file modified src/networking/networking/Interfaces/ILocalIpAddressProvider.cs
100755 → 100644
Empty file.
2 changes: 2 additions & 0 deletions src/networking/networking/Networking.csproj
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Description>Library used for IP address parsing and more!</Description>

<Version>1.0.4</Version>
</PropertyGroup>

<ItemGroup>
Expand Down
Empty file modified src/random/random/Factories/RandomFactory.cs
100755 → 100644
Empty file.
Empty file modified src/random/random/Implementation/LongRandom.cs
100755 → 100644
Empty file.
Empty file modified src/random/random/Implementation/PercentageInvoker.cs
100755 → 100644
Empty file.
Empty file modified src/random/random/Implementation/RngCryptoServiceRandom.cs
100755 → 100644
Empty file.
Empty file modified src/random/random/Implementation/ThreadLocalRandom.cs
100755 → 100644
Empty file.
Empty file modified src/random/random/Interfaces/IPercentageInvoker.cs
100755 → 100644
Empty file.
Empty file modified src/random/random/Interfaces/IRandom.cs
100755 → 100644
Empty file.
Loading
Loading