7#include "../report_scratch.hpp"
22 explicit File(
const std::string& directory)
24 int descriptor() const noexcept {
return file_.descriptor(); }
25 std::uint64_t
read_count() const noexcept {
return file_.read_count(); }
26 std::uint64_t
read_bytes() const noexcept {
return file_.read_bytes(); }
27 void write(std::uint64_t offset,
const void* bytes, std::size_t count) {
28 file_.write(
static_cast<std::int64_t
>(offset), bytes, count);
30 void read(std::uint64_t offset,
void* bytes, std::size_t count)
const {
31 file_.read(
static_cast<std::int64_t
>(offset), bytes, count);
34 void release() noexcept { file_.release(); }
36 report_sink::ScratchFile file_;
41 static void preserve(std::shared_ptr<PositionTailSpill>& spill,
43 std::int64_t position_open,
const std::string& directory,
45 preserve_with_capacity(spill, trades, end, position_open, directory, cache_bytes);
47 static void preserve(std::shared_ptr<PositionTailSpill>& spill,
49 std::int64_t position_open,
const std::string& directory,
51 preserve_with_capacity(spill, trades, end, position_open, directory, capacity);
55 template<
class Capacity>
56 static void preserve_with_capacity(std::shared_ptr<PositionTailSpill>& spill,
58 std::int64_t position_open,
const std::string& directory,
59 Capacity cache_bytes) {
60 if (end < trades.
base() || end > trades.
size()) {
62 "invalid Pine position-tail seal prefix");
64 if (position_open == std::numeric_limits<std::int64_t>::min()) {
68 for (std::size_t i = trades.
base(); i < end; ++i) {
69 const Trade& trade = trades[i];
70 if (trade.exit_time < position_open) {
75 if (!spill) spill = std::make_shared<PositionTailSpill>(directory, cache_bytes);
Base with a code: throw coded<std::invalid_argument>(code, {args}, text).
void read(std::uint64_t offset, void *bytes, std::size_t count) const
void write(std::uint64_t offset, const void *bytes, std::size_t count)
int descriptor() const noexcept
File(const std::string &directory)
std::uint64_t read_bytes() const noexcept
std::uint64_t read_count() const noexcept
static constexpr std::size_t kWindowBytes
static void preserve(std::shared_ptr< PositionTailSpill > &spill, const TradeLedger &trades, std::size_t end, std::int64_t position_open, const std::string &directory, std::size_t cache_bytes=PositionTailSpill::kWindowBytes)
static void preserve(std::shared_ptr< PositionTailSpill > &spill, const TradeLedger &trades, std::size_t end, std::int64_t position_open, const std::string &directory, CacheCapacity capacity)