Content Reader/Writer, StreamCopyCommandHandler

This commit is contained in:
2022-06-09 06:59:53 +02:00
parent e947282d7b
commit 6d9bf7ab32
27 changed files with 494 additions and 27 deletions

View File

@@ -0,0 +1,60 @@
using FileTime.Core.ContentAccess;
namespace FileTime.Providers.Local;
public class LocalContentWriter : IContentWriter
{
private readonly FileStream _writerStream;
private readonly BinaryWriter _binaryWriter;
private bool disposed;
public int PreferredBufferSize => 1024 * 1024;
public LocalContentWriter(FileStream writerStream)
{
_writerStream = writerStream;
_binaryWriter = new BinaryWriter(_writerStream);
}
public Task WriteBytesAsync(byte[] data, int? index = null)
{
if (index != null)
{
_binaryWriter.Write(data, index.Value, data.Length);
}
else
{
_binaryWriter.Write(data);
}
return Task.CompletedTask;
}
public Task FlushAsync()
{
_binaryWriter.Flush();
return Task.CompletedTask;
}
~LocalContentWriter()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
_writerStream.Dispose();
_binaryWriter.Dispose();
}
}
disposed = true;
}
}