1#include "WriteFileHandle.h"
3#include "FileManager.h"
9 bool WriteFileHandle::CachingBuffer::increaseCacheData()
11 if (!isCachingAvailable)
16 string_view availableCacheData(pbase(), pptr());
20 isCachingAvailable =
false;
22 _utility::changeCurrentCacheSize<minus>(cacheData.size());
29 _utility::changeCurrentCacheSize<plus>(availableCacheData.size());
31 cacheData += availableCacheData;
36 WriteFileHandle::CachingBuffer::CachingBuffer(Cache& cache,
const filesystem::path& filePath, ios_base::openmode mode) :
39 isCachingAvailable(cache.getCacheSize())
44 int WriteFileHandle::CachingBuffer::sync()
46 this->increaseCacheData();
48 return filebuf::sync();
51 WriteFileHandle::CachingBuffer::~CachingBuffer()
53 if (!this->increaseCacheData())
58 _utility::addCache(move(filePath), move(cacheData));
61 WriteFileHandle::WriteFileHandle(
const filesystem::path& filePath, ios_base::openmode mode) :
62 FileHandle(filePath, mode | ios_base::out)
67 void WriteFileHandle::write(
const string& data)
69 file.write(data.data(), data.size()).flush();
72 ostream& WriteFileHandle::getStream()
74 return file.write(
nullptr, 0);
77 WriteFileHandle::~WriteFileHandle()
79 if (isNotifyOnDestruction)
81 FileManager::getInstance().completeWriteRequest(filePath);
uint64_t getCacheSize() const
Get global cache size.
uint64_t getCurrentCacheSize() const
Used cache size.