mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2024-11-14 04:57:21 +01:00
51 lines
1.0 KiB
C
51 lines
1.0 KiB
C
|
/**
|
||
|
*
|
||
|
* CacheFile.h
|
||
|
* An Tao
|
||
|
*
|
||
|
* Copyright 2018, An Tao. All rights reserved.
|
||
|
* https://github.com/an-tao/drogon
|
||
|
* Use of this source code is governed by a MIT license
|
||
|
* that can be found in the License file.
|
||
|
*
|
||
|
* Drogon
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include <core/string_view.h>
|
||
|
#include <trantor/utils/NonCopyable.h>
|
||
|
#include <string>
|
||
|
#include <stdio.h>
|
||
|
|
||
|
namespace drogon
|
||
|
{
|
||
|
class CacheFile : public trantor::NonCopyable
|
||
|
{
|
||
|
public:
|
||
|
explicit CacheFile(const std::string &path, bool autoDelete = true);
|
||
|
~CacheFile();
|
||
|
void append(const std::string &data)
|
||
|
{
|
||
|
append(data.data(), data.length());
|
||
|
}
|
||
|
void append(const char *data, size_t length);
|
||
|
string_view getStringView()
|
||
|
{
|
||
|
if (data())
|
||
|
return string_view(data_, dataLength_);
|
||
|
return string_view();
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
char *data();
|
||
|
size_t length();
|
||
|
FILE *file_{nullptr};
|
||
|
bool autoDelete_{true};
|
||
|
const std::string path_;
|
||
|
char *data_{nullptr};
|
||
|
size_t dataLength_{0};
|
||
|
};
|
||
|
} // namespace drogon
|