C++ Actor Framework 0.18
|
The default downstream manager base stores outbound paths in an unordered map. More...
#include <downstream_manager_base.hpp>
Classes | |
struct | metrics_t |
Optional metrics for outbound stream traffic. More... | |
Public Types | |
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 | |
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. | |
Protected Member Functions | |
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 . | |
Protected Attributes | |
map_type | paths_ |
metrics_t | metrics_ |
![]() | |
stream_manager * | parent_ |
time_point | last_send_ |
Stores the time stamp of our last batch. | |
The default downstream manager base stores outbound paths in an unordered map.
It always takes ownership of the paths by using unique pointers.
|
overrideprotectedvirtualnoexcept |
Dispatches the predicate to std::all_of
, std::any_of
, or std::none_of
.
Reimplemented from caf::downstream_manager.
|
overridevirtual |
Silently removes all paths.
Reimplemented from caf::downstream_manager.
|
overrideprotectedvirtual |
Applies f
to each path.
Reimplemented from caf::downstream_manager.
|
overrideprotectedvirtual |
Inserts ptr
to the implementation-specific container.
Reimplemented from caf::downstream_manager.
|
overridevirtualnoexcept |
Returns the current number of paths.
Reimplemented from caf::downstream_manager.
|
overridevirtualnoexcept |
Returns the path associated to slot
or nullptr
.
Reimplemented from caf::downstream_manager.
|
overridevirtualnoexcept |
Removes a path from the manager.
Reimplemented from caf::downstream_manager.