EuropaTools/include/europa/io/PakProgressReportSink.hpp

47 lines
1,014 B
C++
Raw Normal View History

//
// EuropaTools
//
2025-01-07 14:17:50 -05:00
// (C) 2021-2025 modeco80 <lily.modeco80@protonmail.ch>
//
// SPDX-License-Identifier: MIT
//
#ifndef EUROPA_IO_PAKPROGRESSREPORTSINK_H
#define EUROPA_IO_PAKPROGRESSREPORTSINK_H
#include <string>
namespace europa::io {
2025-01-07 15:13:10 -05:00
/// Interface for [PakWriter] to output detailed progress information.
struct PakProgressReportSink {
struct PakEvent {
2025-01-07 15:13:10 -05:00
enum class EventCode {
FillInHeader, /// Filling in header.
WritingHeader, /// Writing header.
WritingToc /// Writing archive TOC.
};
2025-01-07 15:13:10 -05:00
EventCode eventCode;
};
struct FileEvent {
2025-01-07 15:13:10 -05:00
enum class EventCode {
FileWriteBegin, /// File has began write to package
FileWriteEnd, /// File has been written to package
};
2025-01-07 15:13:10 -05:00
EventCode eventCode;
const std::string& targetFileName;
};
virtual ~PakProgressReportSink() = default;
virtual void OnEvent(const PakEvent& event) = 0;
virtual void OnEvent(const FileEvent& event) = 0;
};
} // namespace europa::io
#endif // EUROPA_IO_PAKPROGRESSREPORTSINK_H