Ple Read Executor#

class PleReadExecutor#

Fixed PLE readers with pinned scratch buffers. Borrowed file handles outlive this executor.

Public Functions

PleReadExecutor(
std::vector<PleFileHandle> const &files,
size_t readerCount,
size_t maxReadBytes
)#
~PleReadExecutor() noexcept#
PleReadExecutor(PleReadExecutor const&) = delete#
PleReadExecutor &operator=(PleReadExecutor const&) = delete#
void read(
std::vector<PleReadRange> const &ranges,
char *packed,
size_t &readCalls,
size_t &readBytes
)#

Execute a validated plan with disjoint destinations and ranges fitting maxReadBytes. Calls are serialized by the owner. All readers finish before return or throw; counters include completed partial reads on failure.

struct State#

Public Functions

inline State(
std::vector<PleFileHandle> const &files_,
size_t readerCount,
size_t maxReadBytes
)#
inline ~State() noexcept#
inline void stop() noexcept#
inline void run(Reader &reader)#

Public Members

std::vector<PleFileHandle> const files#
std::vector<Reader> readers#
std::mutex mutex#
std::condition_variable ready#
std::condition_variable finished#
std::atomic<size_t> next = {}#
std::vector<PleReadRange> const *ranges = {}#
char *packed = {}#
size_t generation = {}#
size_t remaining = {}#
bool stopping = {}#
struct Reader#

Public Functions

inline explicit Reader(size_t bytes)#

Public Members

Tensor buffer#
std::thread thread#
size_t calls = {}#
size_t bytes = {}#
std::exception_ptr error#