More cleanup and move IO stuff to it's own namespace

This commit is contained in:
Cyberboss
2018-07-23 13:22:28 -04:00
parent d216471a6a
commit c0e78c1a2a
19 changed files with 33 additions and 12 deletions
@@ -8,7 +8,7 @@ using System.Threading.Tasks;
using Tgstation.Server.Api.Models.Internal;
using Tgstation.Server.Host.Components.Chat.Commands;
using Tgstation.Server.Host.Components.Chat.Providers;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
namespace Tgstation.Server.Host.Components.Chat
{
@@ -1,7 +1,7 @@
using Microsoft.Extensions.Logging;
using System;
using Tgstation.Server.Host.Components.Chat.Commands;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
namespace Tgstation.Server.Host.Components.Chat
{
@@ -6,6 +6,7 @@ using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Host.Components.Chat.Commands;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
namespace Tgstation.Server.Host.Components.Chat
{
@@ -8,7 +8,7 @@ using System.Security.Cryptography;
using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Api.Models;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
using Tgstation.Server.Host.Security;
namespace Tgstation.Server.Host.Components
@@ -5,6 +5,7 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
using Tgstation.Server.Host.Models;
namespace Tgstation.Server.Host.Components
@@ -1,5 +1,5 @@
using System;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
using Tgstation.Server.Host.Models;
namespace Tgstation.Server.Host.Components
@@ -11,6 +11,7 @@ using Tgstation.Server.Api.Models;
using Tgstation.Server.Api.Models.Internal;
using Tgstation.Server.Host.Components.Watchdog;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
namespace Tgstation.Server.Host.Components
{
@@ -5,6 +5,7 @@ using Tgstation.Server.Host.Components.Chat;
using Tgstation.Server.Host.Components.Chat.Commands;
using Tgstation.Server.Host.Components.Watchdog;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
using Tgstation.Server.Host.Security;
namespace Tgstation.Server.Host.Components
@@ -5,7 +5,7 @@ using System.Globalization;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
namespace Tgstation.Server.Host.Components
{
@@ -2,8 +2,8 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Api.Models.Internal;
using Tgstation.Server.Host.IO;
namespace Tgstation.Server.Host.Components
{
@@ -10,6 +10,7 @@ using System.Threading.Tasks;
using Tgstation.Server.Api.Models.Internal;
using Tgstation.Server.Host.Components.Chat;
using Tgstation.Server.Host.Core;
using Tgstation.Server.Host.IO;
using Tgstation.Server.Host.Security;
namespace Tgstation.Server.Host.Components.Watchdog
@@ -20,6 +20,7 @@ using Tgstation.Server.Host.Components.Chat.Commands;
using Tgstation.Server.Host.Components.Watchdog;
using Tgstation.Server.Host.Configuration;
using Tgstation.Server.Host.Controllers;
using Tgstation.Server.Host.IO;
using Tgstation.Server.Host.Models;
using Tgstation.Server.Host.Security;
@@ -7,7 +7,7 @@ using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Tgstation.Server.Host.Core
namespace Tgstation.Server.Host.IO
{
/// <summary>
/// <see cref="IIOManager"/> that resolves paths to <see cref="Environment.CurrentDirectory"/>
@@ -220,5 +220,13 @@ namespace Tgstation.Server.Host.Core
}
return (IReadOnlyList<string>)results;
}, cancellationToken, TaskCreationOptions.LongRunning, TaskScheduler.Current);
/// <inheritdoc />
public Task CreateSymlink(string target, string link, CancellationToken cancellationToken) => Task.Factory.StartNew(() =>
{
target = ResolvePath(target);
link = ResolvePath(link);
}, cancellationToken, TaskCreationOptions.LongRunning, TaskScheduler.Current);
}
}
@@ -2,7 +2,7 @@
using System.Threading;
using System.Threading.Tasks;
namespace Tgstation.Server.Host.Core
namespace Tgstation.Server.Host.IO
{
/// <summary>
/// Interface for using filesystems
@@ -1,7 +1,7 @@
using System.Collections.Generic;
using System.Threading;
namespace Tgstation.Server.Host.Core
namespace Tgstation.Server.Host.IO
{
/// <summary>
/// For accessing the disk in a synchronous manner
@@ -1,7 +1,7 @@
using System;
using System.IO;
namespace Tgstation.Server.Host.Core
namespace Tgstation.Server.Host.IO
{
/// <summary>
/// An <see cref="IIOManager"/> that resolve relative paths from another <see cref="IIOManager"/> to a subdirectory of that
@@ -6,7 +6,7 @@ using System.Linq;
using System.Security.Cryptography;
using System.Threading;
namespace Tgstation.Server.Host.Core
namespace Tgstation.Server.Host.IO
{
/// <inheritdoc />
sealed class SynchronousIOManager : ISynchronousIOManager
@@ -13,5 +13,11 @@ namespace Tgstation.Server.Host
/// </summary>
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, out IntPtr phToken);
/// <summary>
/// See https://docs.microsoft.com/en-us/windows/desktop/api/winbase/nf-winbase-createsymboliclinkw
/// </summary>
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
static extern bool CreateSymbolicLink(string lpSymlinkFileName, string lpTargetFileName, int dwFlags);
}
}
@@ -33,7 +33,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Byond.TopicSender" Version="1.1.0.1" />
<PackageReference Include="Byond.TopicSender" Version="1.1.1" />
<PackageReference Include="Cyberboss.SmartIrc4net.Standard" Version="0.4.5" />
<PackageReference Include="Discord.Net.WebSocket" Version="1.0.2" />
<PackageReference Include="LibGit2Sharp" Version="0.26.0-preview-0027" />
@@ -45,6 +45,7 @@
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.1" />
<PackageReference Include="Mono.Posix.NETStandard" Version="1.0.0" />
<PackageReference Include="MySql.Data.EntityFrameworkCore" Version="8.0.11" />
<PackageReference Include="Octokit" Version="0.31.0" />
<PackageReference Include="System.DirectoryServices.AccountManagement" Version="4.5.0" />