mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 11:05:54 +00:00
Per XLS-0095, we are taking steps to rename ripple(d) to xrpl(d). This change specifically removes all copyright notices referencing Ripple, XRPLF, and certain affiliated contributors upon mutual agreement, so the notice in the LICENSE.md file applies throughout. Copyright notices referencing external contributions remain as-is. Duplicate verbiage is also removed.
67 lines
1.4 KiB
C++
67 lines
1.4 KiB
C++
#ifndef BEAST_UTILITY_TEMP_DIR_H_INCLUDED
|
|
#define BEAST_UTILITY_TEMP_DIR_H_INCLUDED
|
|
|
|
#include <boost/filesystem.hpp>
|
|
|
|
#include <string>
|
|
|
|
namespace beast {
|
|
|
|
/** RAII temporary directory.
|
|
|
|
The directory and all its contents are deleted when
|
|
the instance of `temp_dir` is destroyed.
|
|
*/
|
|
class temp_dir
|
|
{
|
|
boost::filesystem::path path_;
|
|
|
|
public:
|
|
#if !GENERATING_DOCS
|
|
temp_dir(temp_dir const&) = delete;
|
|
temp_dir&
|
|
operator=(temp_dir const&) = delete;
|
|
#endif
|
|
|
|
/// Construct a temporary directory.
|
|
temp_dir()
|
|
{
|
|
auto const dir = boost::filesystem::temp_directory_path();
|
|
do
|
|
{
|
|
path_ = dir / boost::filesystem::unique_path();
|
|
} while (boost::filesystem::exists(path_));
|
|
boost::filesystem::create_directory(path_);
|
|
}
|
|
|
|
/// Destroy a temporary directory.
|
|
~temp_dir()
|
|
{
|
|
// use non-throwing calls in the destructor
|
|
boost::system::error_code ec;
|
|
boost::filesystem::remove_all(path_, ec);
|
|
// TODO: warn/notify if ec set ?
|
|
}
|
|
|
|
/// Get the native path for the temporary directory
|
|
std::string
|
|
path() const
|
|
{
|
|
return path_.string();
|
|
}
|
|
|
|
/** Get the native path for the a file.
|
|
|
|
The file does not need to exist.
|
|
*/
|
|
std::string
|
|
file(std::string const& name) const
|
|
{
|
|
return (path_ / name).string();
|
|
}
|
|
};
|
|
|
|
} // namespace beast
|
|
|
|
#endif
|