You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.0 KiB
36 lines
1.0 KiB
using System;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using DiscordChatExporter.Core.Discord.Data;
|
|
|
|
namespace DiscordChatExporter.Core.Exporting.Writers;
|
|
|
|
internal abstract class MessageWriter : IAsyncDisposable
|
|
{
|
|
protected Stream Stream { get; }
|
|
|
|
protected ExportContext Context { get; }
|
|
|
|
public long MessagesWritten { get; private set; }
|
|
|
|
public long BytesWritten => Stream.Length;
|
|
|
|
protected MessageWriter(Stream stream, ExportContext context)
|
|
{
|
|
Stream = stream;
|
|
Context = context;
|
|
}
|
|
|
|
public virtual ValueTask WritePreambleAsync(CancellationToken cancellationToken = default) => default;
|
|
|
|
public virtual ValueTask WriteMessageAsync(Message message, CancellationToken cancellationToken = default)
|
|
{
|
|
MessagesWritten++;
|
|
return default;
|
|
}
|
|
|
|
public virtual ValueTask WritePostambleAsync(CancellationToken cancellationToken = default) => default;
|
|
|
|
public virtual async ValueTask DisposeAsync() => await Stream.DisposeAsync();
|
|
} |