ObjLoading: Initial commit for IPak entry reading

This commit is contained in:
Jan
2020-02-08 22:54:24 +01:00
parent 91d5439f25
commit 28bc614a6d
5 changed files with 412 additions and 81 deletions

View File

@ -1,15 +1,22 @@
#pragma once
#include "Utils/FileAPI.h"
#include <vector>
#include <cstdint>
#include <mutex>
class IPakStreamManagerActions
{
public:
virtual void StartReading() = 0;
virtual void StopReading() = 0;
virtual void CloseStream(FileAPI::IFile* stream) = 0;
};
class IPakStreamManager
{
FileAPI::IFile* m_file;
std::vector<FileAPI::IFile*> m_open_streams;
std::mutex m_read_mutex;
std::mutex m_stream_mutex;
class Impl;
Impl* m_impl;
public:
explicit IPakStreamManager(FileAPI::IFile* file);
@ -20,6 +27,5 @@ public:
IPakStreamManager& operator=(const IPakStreamManager& other) = delete;
IPakStreamManager& operator=(IPakStreamManager&& other) noexcept = delete;
FileAPI::IFile* OpenStream(int64_t startPosition, size_t length);
void OnCloseStream(FileAPI::IFile* stream);
FileAPI::IFile* OpenStream(int64_t startPosition, size_t length) const;
};