wabbajack/Wabbajack.Common/IStreamFactory.cs
2021-07-05 23:26:08 -06:00

51 lines
1.1 KiB
C#

using System;
using System.IO;
using System.Threading.Tasks;
using Wabbajack.Common;
namespace Wabbajack.Common
{
public interface IStreamFactory
{
ValueTask<Stream> GetStream();
DateTime LastModifiedUtc { get; }
IPath Name { get; }
}
public class NativeFileStreamFactory : IStreamFactory
{
protected AbsolutePath _file;
public NativeFileStreamFactory(AbsolutePath file, IPath path)
{
_file = file;
Name = path;
}
public NativeFileStreamFactory(AbsolutePath file)
{
_file = file;
Name = file;
}
public async ValueTask<Stream> GetStream()
{
return await _file.OpenRead();
}
private DateTime? _lastModifiedCache = null;
public DateTime LastModifiedUtc
{
get
{
_lastModifiedCache ??= _file.LastModifiedUtc;
return _lastModifiedCache.Value;
}
}
public IPath Name { get; }
}
}