CAF  0.17.2
Classes | Public Types | Public Member Functions | Protected Member Functions | List of all members
caf::fused_downstream_manager< T, Ts > Class Template Reference

A downstream manager that delegates to any number of sub-managers. More...

#include <fused_downstream_manager.hpp>

Inheritance diagram for caf::fused_downstream_manager< T, Ts >:
caf::downstream_manager

Classes

struct  non_owning_ptr
 State held for each slot. More...
 

Public Types

using super = downstream_manager
 Base type.
 
using nested_managers = std::tuple< T, Ts... >
 A tuple holding all nested managers.
 
using param_list = detail::type_list< T, Ts... >
 
using map_type = detail::unordered_flat_map< stream_slot, non_owning_ptr >
 Maps slots to path and nested managers.
 
using unassigned_map_type = detail::unordered_flat_map< stream_slot, unique_path_ptr >
 Maps slots to paths that haven't a managers assigned yet.
 
using path_ptr = path_type *
 Pointer to an outbound path.
 
using unique_path_ptr = std::unique_ptr< path_type >
 Unique pointer to an outbound path.
 
- 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.
 

Public Member Functions

 fused_downstream_manager (stream_manager *parent)
 
template<class U >
U & get ()
 
template<class U >
const U & get () const
 
template<class U >
void assign (stream_slot slot)
 Requires a previous call to add_path for given slot.
 
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 num_paths () const noexcept override
 Returns the current number of paths.
 
bool remove_path (stream_slot slot, error reason, bool silent) noexcept override
 Removes a path from the manager.
 
path_ptr path (stream_slot slot) noexcept override
 Returns the path associated to slot or nullptr.
 
void close () override
 Removes all paths gracefully.
 
void abort (error reason) override
 Removes all paths with an error message.
 
void emit_batches () override
 Sends batches to sinks.
 
void force_emit_batches () override
 Sends batches to sinks regardless of whether or not the batches reach the desired batch size.
 
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.
 
void clear_paths () override
 Silently removes all paths.
 
- Public Member Functions inherited from caf::downstream_manager
 downstream_manager (stream_manager *parent)
 
scheduled_actorself () const noexcept
 
stream_managerparent () const noexcept
 
template<class F >
void for_each_path (F f)
 Applies f to each path.
 
std::vector< stream_slotpath_slots ()
 Returns all used slots.
 
std::vector< stream_slotopen_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.
 
path_ptr add_path (stream_slot slot, strong_actor_ptr target)
 Adds a pending path to target to the manager. More...
 
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. More...
 
virtual void close (stream_slot slot)
 Removes path slot gracefully by sending pending batches before removing it. More...
 
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 size_t buffered (stream_slot slot) const noexcept
 Queries an estimate of the size of the output buffer for slot.
 
virtual int32_t max_capacity () const noexcept
 Computes the maximum available downstream capacity.
 
bool stalled () const noexcept
 Queries whether the manager cannot make any progress, because its buffer is full and no more credit is available.
 

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 void about_to_erase (path_ptr ptr, bool silent, error *reason)
 Emits a regular (reason == nullptr) or irregular (reason != nullptr) shutdown if silent == false. More...
 
template<class Predicate >
bool check_paths (path_algorithm algorithm, Predicate predicate) const noexcept
 Delegates to check_paths_impl.
 

Additional Inherited Members

- Protected Attributes inherited from caf::downstream_manager
stream_managerparent_
 

Detailed Description

template<class T, class... Ts>
class caf::fused_downstream_manager< T, Ts >

A downstream manager that delegates to any number of sub-managers.


The documentation for this class was generated from the following file: