| 
    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.  | |
  Public Types inherited from caf::downstream_manager | |
| 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) | 
  Public Member Functions inherited from caf::downstream_manager | |
| 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.   | |
  Protected Member Functions inherited from caf::downstream_manager | |
| 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_ | 
  Protected Attributes inherited from caf::downstream_manager | |
| 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.