Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
PrevUpHomeNext

RatePolicy

An instance of RatePolicy is associated with a basic_stream, and controls the rate at which bytes may be independently sent and received. This may be used to achieve fine-grained bandwidth management and flow control.

Associated Types
[Warning] Warning

These requirements may undergo non-backward compatible changes in subsequent versions.

Requirements

In this table:

Table 1.43. Valid expressions

Expression

Type

Semantics, Pre/Post-conditions

P a(x)

Requires MoveConstructible.

friend rate_policy_access

The member functions required in P should be private. rate_policy_access must be a friend of P for the implementation to gain access to the required member functions.

a.available_read_bytes()

std::size_t

This function is called by the implementation to determine the maximum number of allowed bytes to be transferred in the next read operation. The actual number of bytes subsequently transferred may be less than this number.

If the policy returns a value of zero, the read operation will asynchronously wait until the next timer interval before retrying. When the retry occurs, this function will be called again.

a.available_write_bytes()

std::size_t

This function is called by the implementation to determine the maximum number of allowed bytes to be transferred in the next write operation. The actual number of bytes subsequently transferred may be less than this number.

If the policy returns a value of zero, the read operation will asynchronously wait until the next timer interval before retrying. When the retry occurs, this function will be called again.

a.transfer_read_bytes(n)

The implementation calls this function to inform the policy that n bytes were successfully transferred in the most recent read operation. The policy object may optionally use this information to calculate throughputs and/or inform the algorithm used to determine subsequently queried transfer maximums.

a.transfer_write_bytes(n)

The implementation calls this function to inform the policy that n bytes were successfully transferred in the most recent write operation. The policy object may optionally use this information to calculate throughputs and/or inform the algorithm used to determine subsequently queried transfer limits.

a.on_timer()

The implementation calls this function every time the internal timer expires. The policy object may optionally use this opportunity to calculate elapsed time and throughput, and/or inform the algorithm used to determine subsequently queried transfer limits.


Exemplar
class RatePolicy
{
    friend class rate_policy_access;

    std::size_t
    available_read_bytes();

    std::size_t
    available_write_bytes();

    void
    transfer_read_bytes(std::size_t);

    void
    transfer_write_bytes(std::size_t);

    void
    on_timer();
};
Models

PrevUpHomeNext