C++ Actor Framework 0.18
|
Mixin for streams with any number of downstreams. More...
#include <buffered_downstream_manager.hpp>
Public Types | |
using | super = downstream_manager_base |
using | output_type = T |
using | buffer_type = std::deque< output_type > |
using | chunk_type = std::vector< output_type > |
![]() | |
using | super = downstream_manager |
Base type. | |
using | map_type = detail::unordered_flat_map< stream_slot, unique_path_ptr > |
Maps slots to paths. | |
![]() | |
enum | path_algorithm { all_of , any_of , none_of } |
Selects a check algorithms. | |
using | path_type = outbound_path |
Outbound path. | |
using | path_ptr = path_type * |
Pointer to an outbound path. | |
using | const_path_ptr = const path_type * |
Pointer to an immutable outbound path. | |
using | unique_path_ptr = std::unique_ptr< path_type > |
Unique pointer to an outbound path. | |
using | time_point = typename actor_clock::time_point |
Discrete point in time, as reported by the actor clock. | |
Public Member Functions | |
buffered_downstream_manager (stream_manager *parent) | |
buffered_downstream_manager (stream_manager *parent, type_id_t type) | |
template<class T0 , class... Ts> | |
void | push (T0 &&x, Ts &&... xs) |
chunk_type | get_chunk (size_t n) |
bool | terminal () const noexcept override |
Returns true if this manager belongs to a sink, i.e., terminates the stream and never has outbound paths. | |
size_t | capacity () const noexcept override |
Queries the currently available capacity for the output buffer. | |
size_t | buffered () const noexcept override |
Queries the size of the output buffer. | |
buffer_type & | buf () |
const buffer_type & | buf () const |
![]() | |
downstream_manager_base (stream_manager *parent) | |
downstream_manager_base (stream_manager *parent, type_id_t type) | |
const map_type & | paths () const |
map_type & | paths () |
size_t | num_paths () const noexcept override |
Returns the current number of paths. | |
bool | remove_path (stream_slot slots, error reason, bool silent) noexcept override |
Removes a path from the manager. | |
path_ptr | path (stream_slot slots) noexcept override |
Returns the path associated to slot or nullptr . | |
void | clear_paths () override |
Silently removes all paths. | |
void | generated_messages (size_t num) |
void | dropped_messages (size_t num) |
void | shipped_messages (size_t num) |
![]() | |
downstream_manager (stream_manager *parent) | |
downstream_manager (const downstream_manager &)=delete | |
downstream_manager & | operator= (const downstream_manager &)=delete |
scheduled_actor * | self () const noexcept |
stream_manager * | parent () const noexcept |
virtual bool | terminal () const noexcept |
Returns true if this manager belongs to a sink, i.e., terminates the stream and never has outbound paths. | |
void | tick (time_point now, timespan max_batch_delay) |
Forces underful batches after reaching the maximum delay. | |
template<class F > | |
void | for_each_path (F f) |
Applies f to each path. | |
template<class F > | |
void | for_each_path (F f) const |
Applies f to each path. | |
std::vector< stream_slot > | path_slots () |
Returns all used slots. | |
std::vector< stream_slot > | open_path_slots () |
Returns all open slots, i.e., slots assigned to outbound paths with closing == false . | |
template<class Predicate > | |
bool | all_paths (Predicate predicate) const noexcept |
Checks whether predicate holds true for all paths. | |
template<class Predicate > | |
bool | any_path (Predicate predicate) const noexcept |
Checks whether predicate holds true for any path. | |
template<class Predicate > | |
bool | no_path (Predicate predicate) const noexcept |
Checks whether predicate holds true for no path. | |
virtual size_t | num_paths () const noexcept |
Returns the current number of paths. | |
path_ptr | add_path (stream_slot slot, strong_actor_ptr target) |
Adds a pending path to target to the manager. | |
virtual bool | remove_path (stream_slot slot, error reason, bool silent) noexcept |
Removes a path from the manager. | |
virtual path_ptr | path (stream_slot slot) noexcept |
Returns the path associated to slot or nullptr . | |
const_path_ptr | path (stream_slot slot) const noexcept |
Returns the path associated to slot or nullptr . | |
bool | clean () const noexcept |
Returns true if there is no data pending and all batches are acknowledged batch on all paths. | |
bool | clean (stream_slot slot) const noexcept |
Returns true if slot is unknown or if there is no data pending and all batches are acknowledged on slot . | |
virtual void | close () |
Removes all paths gracefully. | |
virtual void | close (stream_slot slot) |
Removes path slot gracefully by sending pending batches before removing it. | |
virtual void | abort (error reason) |
Removes all paths with an error message. | |
bool | empty () const noexcept |
Returns num_paths() == 0 . | |
size_t | min_credit () const |
Returns the minimum amount of credit on all output paths. | |
size_t | max_credit () const |
Returns the maximum amount of credit on all output paths. | |
size_t | total_credit () const |
Returns the total amount of credit on all output paths, i.e., the sum of all individual credits. | |
virtual void | emit_batches () |
Sends batches to sinks. | |
virtual void | force_emit_batches () |
Sends batches to sinks regardless of whether or not the batches reach the desired batch size. | |
virtual size_t | capacity () const noexcept |
Queries the currently available capacity for the output buffer. | |
virtual size_t | buffered () const noexcept |
Queries the size of the output buffer. | |
virtual size_t | buffered (stream_slot slot) const noexcept |
Queries an estimate of the size of the output buffer for slot . | |
bool | stalled () const noexcept |
Queries whether the manager cannot make any progress, because its buffer is full and no more credit is available. | |
virtual void | clear_paths () |
Silently removes all paths. | |
Static Public Member Functions | |
static chunk_type | get_chunk (buffer_type &buf, size_t n) |
Protected Attributes | |
buffer_type | buf_ |
![]() | |
map_type | paths_ |
metrics_t | metrics_ |
![]() | |
stream_manager * | parent_ |
time_point | last_send_ |
Stores the time stamp of our last batch. | |
Additional Inherited Members | |
![]() | |
bool | insert_path (unique_path_ptr ptr) override |
Inserts ptr to the implementation-specific container. | |
void | for_each_path_impl (path_visitor &f) override |
Applies f to each path. | |
bool | check_paths_impl (path_algorithm algo, path_predicate &pred) const noexcept override |
Dispatches the predicate to std::all_of , std::any_of , or std::none_of . | |
![]() | |
virtual bool | insert_path (unique_path_ptr ptr) |
Inserts ptr to the implementation-specific container. | |
virtual void | for_each_path_impl (path_visitor &f) |
Applies f to each path. | |
virtual bool | check_paths_impl (path_algorithm algo, path_predicate &pred) const noexcept |
Dispatches the predicate to std::all_of , std::any_of , or std::none_of . | |
virtual void | about_to_erase (path_ptr ptr, bool silent, error *reason) |
Emits a regular (reason == nullptr ) or irregular (reason != nullptr ) shutdown if silent == false . | |
template<class Predicate > | |
bool | check_paths (path_algorithm algorithm, Predicate predicate) const noexcept |
Delegates to check_paths_impl . | |
Mixin for streams with any number of downstreams.
Subtype
must provide a member function buf()
returning a queue with std::deque
-like interface.
|
overridevirtualnoexcept |
Queries the size of the output buffer.
Reimplemented from caf::downstream_manager.
|
overridevirtualnoexcept |
Queries the currently available capacity for the output buffer.
Reimplemented from caf::downstream_manager.
|
static |
n <= buf_.size()
|
overridevirtualnoexcept |
Returns true
if this manager belongs to a sink, i.e., terminates the stream and never has outbound paths.
Reimplemented from caf::downstream_manager.