25constexpr double absent = std::numeric_limits<double>::quiet_NaN();
124 const std::shared_ptr<const CommandObservation>&
observation()
const {
return observation_; }
125 const std::optional<ReviewReceipt>&
review()
const {
return review_; }
126 const std::optional<SizingRevision>&
sizing_revision()
const {
return sizing_revision_; }
128 std::shared_ptr<const CommandObservation> observation_;
129 std::optional<ReviewReceipt> review_;
130 std::optional<SizingRevision> sizing_revision_;
172 std::vector<BookObservation>
book;
185using Event = std::variant<CommandEvent, ReviewEvent, SizingEvent>;
186using FieldValue = std::variant<uint64_t, int64_t, double, std::string>;
195 std::uint64_t
size() const noexcept
override {
return length_; }
199 std::uint64_t length_ = 0;
200 std::uint64_t rows_ = 0;
204 mutable std::uint64_t next_offset_ = 0;
205 mutable std::uint64_t next_row_ = 0;
206 mutable std::array<std::uint64_t, 4> array_elements_{};
207 mutable std::array<std::uint64_t, 4> array_rows_{};
211 detail::ScratchBuffer,
Event&);
224 uint64_t
digest = 1469598103934665603ULL;
244 void retain(
const std::vector<uint64_t>& sequences);
249 return active_allocations_ != 0 || outstanding_count_ != 0;
258 void retire_prefix(std::size_t count, uint64_t digest, uint64_t last_sequence);
272 std::unique_ptr<CodecState> codec_;
273 void release_allocation(uint64_t
sequence)
noexcept;
274 uint64_t next_sequence_ = 1;
275 uint64_t active_allocations_ = 0;
276 uint64_t outstanding_count_ = 0;
277 std::vector<uint64_t> outstanding_sequences_;
278 mutable std::vector<Event> events_;
280 mutable Prefix folded_window_;
281 mutable bool fold_valid_ =
false;
282 mutable bool filtered_ =
false;
284 struct RejectionGate {
289 mutable RejectionGate rejection_gate_;
292 bool retain_full_observation_history_ =
false;
307 : journal_(&journal), sequence_(
sequence) {}
321 void bind(
Draft& draft, std::optional<SizingObservation> sizing,
322 double explicit_equity,
double explicit_price);
326 std::vector<BookObservation> before_;
340 event_.resolutions.push_back(result);
343 int64_t peer_priority,
double quantity) {
345 event_.resolutions.push_back(result);
return result;
356std::string
read_string(
const std::vector<Field>&
fields,
const std::string& path);
Allocation & operator=(Allocation &&)=delete
Allocation(const Allocation &)=delete
Allocation & operator=(const Allocation &)=delete
uint64_t sequence() const
CommandCapture(Allocation allocation, CommandObservation input, std::vector< BookObservation > before, std::function< void(CommandEvent)> complete)
CommandCapture(const CommandCapture &)=delete
void bind(Draft &draft, std::optional< SizingObservation > sizing, double explicit_equity, double explicit_price)
~CommandCapture() noexcept(false)
const CommandObservation & input() const
CommandCapture & operator=(const CommandCapture &)=delete
void outcome(Outcome outcome)
const std::shared_ptr< const CommandObservation > & observation() const
void reviewed(ReviewReceipt receipt)
const std::optional< ReviewReceipt > & review() const
void bind(std::shared_ptr< const CommandObservation > observation)
void sizing_revised(SizingRevision receipt)
const std::optional< SizingRevision > & sizing_revision() const
std::uint64_t size() const noexcept override
JournalRecordSource(const Event &) noexcept
detail::ScratchStatus read(std::uint64_t, detail::ScratchBuffer) const noexcept override
void retain_full_observation_history()
std::size_t event_count() const
void abandon(uint64_t sequence) noexcept
int last_rejected_command_bar() const
uint64_t sequence_frontier() const
bool has_unfinished_events() const
const std::vector< Event > & events() const
friend detail::ScratchStatus append_journal_record(Journal &, const detail::ScratchByteSource &) noexcept
void reflect(const std::string &path, const FieldVisitor &visit) const
friend const detail::ScratchReadback & journal_readback(const Journal &)
friend void bind_journal_codec(Journal &, detail::CommandScratchStore &)
const Prefix & retired_prefix() const
void retire_prefix(std::size_t count, uint64_t digest, uint64_t last_sequence)
void retain(const std::vector< uint64_t > &sequences)
Prefix folded_window() const
InstructionResolution transaction(uint64_t incarnation, uint64_t peer, int64_t priority, int64_t peer_priority, double quantity)
~ReviewCapture() noexcept(false)
ReviewCapture(Allocation allocation, ReviewEvent event, std::function< void(ReviewEvent)> complete)
ReviewReceipt receipt_for(const Draft &draft) const
ReviewCapture & operator=(const ReviewCapture &)=delete
ReviewCapture(const ReviewCapture &)=delete
void reject(uint64_t incarnation)
std::variant< uint64_t, int64_t, double, std::string > FieldValue
JournalRecordSource encode_journal_record(const Event &) noexcept
uint64_t read_unsigned(const std::vector< Field > &fields, const std::string &path)
std::string read_string(const std::vector< Field > &fields, const std::string &path)
int64_t read_integer(const std::vector< Field > &fields, const std::string &path)
std::vector< Field > fields(const Draft &draft)
std::function< void(const Field &)> FieldVisitor
uint64_t sequence(const Event &event)
void bind_journal_codec(Journal &, detail::CommandScratchStore &)
detail::ScratchStatus decode_journal_record(const detail::ScratchByteSource &, detail::ScratchBuffer, Event &)
double read_double(const std::vector< Field > &fields, const std::string &path)
const detail::ScratchReadback & journal_readback(const Journal &)
void reflect(const Draft &value, const std::string &path, const FieldVisitor &visit)
std::variant< CommandEvent, ReviewEvent, SizingEvent > Event
@ RejectedFrozenMarketCap
@ OpeningRejectedReductionAdmitted
detail::ScratchStatus append_journal_record(Journal &, const detail::ScratchByteSource &) noexcept
admission::Draft MarketAdmissionDraft
admission::Journal MarketAdmissionJournal
std::shared_ptr< const CommandObservation > observation
std::vector< BookObservation > before
std::vector< uint64_t > removed
uint64_t admitted_incarnation
std::optional< SizingObservation > original_sizing
double prior_close_quantity
double requested_quantity
double quantized_fixed_quantity
Configuration configuration
double intraday_loss_limit
double default_quantity_value
int default_quantity_type
double transaction_quantity
uint64_t peer_incarnation
int last_rejected_command_bar
std::vector< InstructionResolution > resolutions
std::vector< BookObservation > book
Configuration configuration
std::vector< BookObservation > reviewed
std::vector< uint64_t > causes
double affordability_equity_after
double affordability_equity_before