|
C++ Actor Framework 0.18
|
State for a single path to a sink of a downstream_manager.
More...
#include <outbound_path.hpp>
Public Types | |
| using | regular_shutdown = downstream_msg::close |
| Propagates graceful shutdowns. | |
| using | irregular_shutdown = downstream_msg::forced_close |
| Propagates errors. | |
| using | cache_type = std::deque< std::pair< int64_t, downstream_msg::batch > > |
| Stores batches until receiving corresponding ACKs. | |
Public Member Functions | |
| outbound_path (stream_slot sender_slot, strong_actor_ptr receiver_hdl) | |
| Constructs a pending path for given slot and handle. | |
| void | emit_batch (local_actor *self, int32_t xs_size, message xs) |
Sends a downstream_msg::batch on this path. | |
| template<class Iterator > | |
| Iterator | emit_batches_impl (local_actor *self, Iterator i, Iterator e, bool force_underfull) |
| template<class T > | |
| void | emit_batches (local_actor *self, std::vector< T > &cache, bool force_underfull) |
Calls emit_batch for each chunk in the cache, whereas each chunk is of size desired_batch_size. | |
| void | emit_regular_shutdown (local_actor *self) |
Sends a downstream_msg::close on this path. | |
| void | emit_irregular_shutdown (local_actor *self, error reason) |
Sends a downstream_msg::forced_close on this path. | |
| bool | pending () const noexcept |
Returns whether this path is pending, i.e., didn't receive an ack_open yet. | |
| bool | clean () const noexcept |
| Returns whether no pending ACKs exist. | |
| void | set_desired_batch_size (int32_t value) noexcept |
Static Public Member Functions | |
| static void | emit_irregular_shutdown (local_actor *self, stream_slots slots, const strong_actor_ptr &hdl, error reason) |
Sends a downstream_msg::forced_close. | |
Public Attributes | |
| stream_slots | slots |
| Slot IDs for sender (self) and receiver (hdl). | |
| strong_actor_ptr | hdl |
| Handle to the sink. | |
| int64_t | next_batch_id |
| Next expected batch ID. | |
| int32_t | open_credit |
| Currently available credit on this path. | |
| int32_t | desired_batch_size |
| Ideal batch size. Configured by the sink. | |
| int64_t | next_ack_id |
| ID of the first unacknowledged batch. | |
| bool | closing |
| Stores whether an outbound path is marked for removal. | |
Static Public Attributes | |
| static constexpr const auto | aborter_type = stream_aborter::sink_aborter |
| Stream aborter flag to monitor a path. | |
Related Functions | |
(Note that these are not member functions.) | |
| template<class Inspector > | |
| bool | inspect (Inspector &f, outbound_path &x) |
State for a single path to a sink of a downstream_manager.
| void caf::outbound_path::emit_batch | ( | local_actor * | self, |
| int32_t | xs_size, | ||
| message | xs | ||
| ) |
Sends a downstream_msg::batch on this path.
Decrements open_credit by xs_size and increments next_batch_id by 1.
| void caf::outbound_path::emit_batches | ( | local_actor * | self, |
| std::vector< T > & | cache, | ||
| bool | force_underfull | ||
| ) |
Calls emit_batch for each chunk in the cache, whereas each chunk is of size desired_batch_size.
Does nothing for pending paths.
| bool caf::outbound_path::closing |
Stores whether an outbound path is marked for removal.
The downstream_manger no longer sends new batches to a closing path, but buffered batches are still shipped. The owning stream_manager removes the path when receiving an upstream_msg::ack_batch and no pending batches for this path exist.
| int64_t caf::outbound_path::next_ack_id |
ID of the first unacknowledged batch.
Note that CAF uses accumulative ACKs, i.e., receiving an ACK with a higher ID is not an error.