C++ Actor Framework  0.18
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Related Functions | List of all members
caf::inbound_path Class Reference

State for a path to an upstream actor (source). More...

#include <inbound_path.hpp>

Collaboration diagram for caf::inbound_path:
Collaboration graph

Classes

struct  metrics_t
 Wraps optional actor metrics collected by this path. More...
 

Public Types

using regular_shutdown = upstream_msg::drop
 Message type for propagating graceful shutdowns.
 
using irregular_shutdown = upstream_msg::forced_drop
 Message type for propagating errors.
 
using time_point = typename actor_clock::time_point
 Discrete point in time, as reported by the actor clock.
 
using duration_type = typename actor_clock::duration_type
 Time interval, as reported by the actor clock.
 

Public Member Functions

template<class T >
 inbound_path (stream_manager *mgr, stream< T > in)
 
void init (strong_actor_ptr source_hdl, stream_slots id)
 
bool up_to_date () const noexcept
 Returns whether the path received no input since last emitting ack_batch, i.e., last_acked_batch_id == last_batch_id. More...
 
scheduled_actorself () const noexcept
 Returns a pointer to the parent actor.
 
int32_t available_credit () const noexcept
 Returns currently unassigned credit that we could assign to the source.
 
const settingsconfig () const noexcept
 Returns the system-wide configuration.
 
void handle (downstream_msg::batch &x)
 Updates last_batch_id and assigned_credit before dispatching to the manager. More...
 
void handle (downstream_msg::close &x)
 Forward the close message to the manager.
 
void handle (downstream_msg::forced_close &x)
 Forward the forced_close message to the manager.
 
void tick (time_point now, duration_type max_batch_delay)
 Forces an ACK message after receiving no input for a considerable amount of time. More...
 
void emit_ack_open (local_actor *self, actor_addr rebind_from)
 Emits an upstream_msg::ack_batch.
 
void emit_ack_batch (local_actor *self, int32_t new_credit)
 Sends an upstream_msg::ack_batch for granting new credit. More...
 
void emit_regular_shutdown (local_actor *self)
 Sends an upstream_msg::drop on this path.
 
void emit_irregular_shutdown (local_actor *self, error reason)
 Sends an upstream_msg::forced_drop on this path.
 

Static Public Member Functions

static void emit_irregular_shutdown (local_actor *self, stream_slots slots, const strong_actor_ptr &hdl, error reason)
 Sends an upstream_msg::forced_drop.
 

Public Attributes

stream_managermgr
 Points to the manager responsible for incoming traffic.
 
strong_actor_ptr hdl
 Handle to the source.
 
stream_slots slots
 Stores slot IDs for sender (hdl) and receiver (self).
 
metrics_t metrics
 Stores pointers to optional telemetry objects.
 
int32_t desired_batch_size = 0
 Stores the last computed desired batch size. More...
 
int32_t assigned_credit = 0
 Amount of credit we have signaled upstream.
 
int32_t max_credit = 0
 Maximum amount of credit that the path may signal upstream. More...
 
int32_t calibration_countdown = 10
 Decremented whenever receiving a batch. More...
 
stream_priority prio = stream_priority::normal
 Priority of incoming batches from this source.
 
int64_t last_acked_batch_id = 0
 ID of the last acknowledged batch ID.
 
int64_t last_batch_id = 0
 ID of the last received batch.
 
std::unique_ptr< credit_controllercontroller_
 Controller for assigning credit to the source.
 
time_point last_ack_time
 Stores when the last ACK was emitted.
 

Related Functions

(Note that these are not member functions.)

template<class Inspector >
bool inspect (Inspector &f, inbound_path &x)
 

Detailed Description

State for a path to an upstream actor (source).

Member Function Documentation

◆ emit_ack_batch()

void caf::inbound_path::emit_ack_batch ( local_actor self,
int32_t  new_credit 
)

Sends an upstream_msg::ack_batch for granting new credit.

Parameters
selfPoints to the parent actor, i.e., sender of the message.
new_creditAmount of new credit to assign to the source.

◆ handle()

void caf::inbound_path::handle ( downstream_msg::batch x)

Updates last_batch_id and assigned_credit before dispatching to the manager.

◆ tick()

void caf::inbound_path::tick ( time_point  now,
duration_type  max_batch_delay 
)

Forces an ACK message after receiving no input for a considerable amount of time.

◆ up_to_date()

bool caf::inbound_path::up_to_date ( ) const
noexcept

Returns whether the path received no input since last emitting ack_batch, i.e., last_acked_batch_id == last_batch_id.

Friends And Related Function Documentation

◆ inspect()

template<class Inspector >
bool inspect ( Inspector &  f,
inbound_path x 
)
related

Member Data Documentation

◆ calibration_countdown

int32_t caf::inbound_path::calibration_countdown = 10

Decremented whenever receiving a batch.

Triggers a re-calibration by the controller when reaching zero.

◆ desired_batch_size

int32_t caf::inbound_path::desired_batch_size = 0

Stores the last computed desired batch size.

Adjusted at run-time by the controller.

◆ max_credit

int32_t caf::inbound_path::max_credit = 0

Maximum amount of credit that the path may signal upstream.

Adjusted at run-time by the controller.


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