123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- [/
- Copyright (c) 2019 Vinnie Falco (vinnie dot falco at gmail dot com)
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- Official repository: https://github.com/boostorg/beast
- ]
- [section:RatePolicy RatePolicy]
- An instance of [*RatePolicy] is associated with a
- [link beast.ref.boost__beast__basic_stream `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.
- [heading Associated Types]
- * [link beast.ref.boost__beast__rate_policy_access `rate_policy_access`]
- [warning
- These requirements may undergo non-backward compatible
- changes in subsequent versions.
- ]
- [heading Requirements]
- In this table:
- * `P` denotes a type that meets the requirements of [*RatePolicy].
- * `x` denotes an xvalue of type `P`
- * `a` denotes a value of type `P`.
- * `n` denotes a value of type `std::size_t`
- [table 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.
- [link beast.ref.boost__beast__rate_policy_access `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.
- ]
- ]]
- [heading Exemplar]
- [concept_RatePolicy]
- [heading Models]
- * [link beast.ref.boost__beast__simple_rate_policy `simple_rate_policy`]
- * [link beast.ref.boost__beast__unlimited_rate_policy `unlimited_rate_policy`]
- [endsect]
|