43 std::unique_ptr<GSROFrameSink>
sink;
44 std::unique_ptr<GSROCratePlugin>
plugin;
97 void cancel(std::exception_ptr error);
113 std::unique_ptr<Impl> impl;
void cancel(std::exception_ptr error)
Fail input and wake waiters. Cleanup runs on the crate thread after any executing callback returns.
void enqueue_payload(GSROPayload payload)
Transfers ownership. Rejects null data, wrong crates, oversized input, and timestamps before a bounda...
std::function< void(std::exception_ptr)> FailureCallback
GSROCrate & operator=(const GSROCrate &)=delete
void advance_time(GSROTime safe_time)
Queue a nondecreasing boundary after all earlier input has been submitted. Equality is permitted.
GSROCrate & operator=(GSROCrate &&)=delete
GSROCrate(GSROCrateId crate_id, ResourceFactory make_resources, GSROCrateLimits limits={}, DeliveryCallback on_delivery={}, FailureCallback on_failure={})
GSROCrate(const GSROCrate &)=delete
GSROCrate(GSROCrate &&)=delete
void rethrow_if_failed() const
Check for a background failure without waiting. Failure also wakes and rejects queued producers.
std::function< GSROCrateResources()> ResourceFactory
void request_finish(GSROEndContext context)
Close input and wake producers without joining; permits a service to stop every crate before waiting.
void finish_and_join(GSROEndContext context)
std::function< void(GSROEventId, std::uint64_t)> DeliveryCallback
std::chrono::duration< std::int64_t, std::nano > GSROTime
std::uint32_t GSROCrateId
std::uint64_t GSROEventId
Implementation contracts for SRO timing, crate processing, and frame output.
Per-crate bounds preventing asynchronous delivery from consuming unlimited memory.
std::size_t queue_messages
Maximum queued payload/progress messages; producers wait when the queue is full.
std::size_t queue_bytes
Maximum accounted payload bytes in the input queue; producers wait until their payload fits.
std::size_t pending_bytes
Maximum accounted payload bytes awaiting time ordering; exceeding this fails the crate.
std::size_t pending_payloads
Maximum payloads awaiting time ordering; exceeding this fails the crate.
Declare the sink first so the plugin referencing it is destroyed first.
std::unique_ptr< GSROFrameSink > sink
std::unique_ptr< GSROCratePlugin > plugin
Input-delivery state passed to the implementation at orderly shutdown.
One worker-produced contribution, transferred by move to its destination crate.