MySQL 9.3.0
Source Code Documentation
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds > Class Template Reference

#include <rate_control_for.h>

Classes

struct  ControlEntry
 

Public Types

using clock = std::chrono::steady_clock
 
using time_point = clock::time_point
 
using milliseconds = std::chrono::milliseconds
 
using seconds = std::chrono::seconds
 

Public Member Functions

 RateControlFor (std::optional< uint64_t > block_after_rate, seconds block_for, std::optional< milliseconds > minimum_time_between_requests)
 
 RateControlFor ()
 
RateControlForoperator= (const RateControlFor &other)
 
void clear ()
 
bool allow (const ControlType &ct, AcceptInfo *info=nullptr)
 
size_t size () const
 

Private Member Functions

bool allow_impl (ControlEntry &entry, AcceptInfo *info)
 
bool allow_check_too_fast (ControlEntry &entry, AcceptInfo *info)
 
bool allow_check_blocked (ControlEntry &entry, AcceptInfo *info)
 

Static Private Member Functions

static milliseconds duration_now (const std::optional< time_point > &value)
 
static milliseconds duration_now (const time_point &value)
 

Private Attributes

std::mutex entries_mutex_
 
std::map< ControlType, ControlEntryentries_
 
milliseconds block_for_
 
std::optional< uint64_t > block_after_ {}
 
std::optional< millisecondsminimum_time_between_requests_
 

Member Typedef Documentation

◆ clock

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
using mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::clock = std::chrono::steady_clock

◆ milliseconds

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
using mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::milliseconds = std::chrono::milliseconds

◆ seconds

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
using mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::seconds = std::chrono::seconds

◆ time_point

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
using mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::time_point = clock::time_point

Constructor & Destructor Documentation

◆ RateControlFor() [1/2]

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::RateControlFor ( std::optional< uint64_t >  block_after_rate,
seconds  block_for,
std::optional< milliseconds minimum_time_between_requests 
)
inline

◆ RateControlFor() [2/2]

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::RateControlFor ( )
inline

Member Function Documentation

◆ allow()

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
bool mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::allow ( const ControlType &  ct,
AcceptInfo info = nullptr 
)
inline

◆ allow_check_blocked()

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
bool mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::allow_check_blocked ( ControlEntry entry,
AcceptInfo info 
)
inlineprivate

◆ allow_check_too_fast()

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
bool mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::allow_check_too_fast ( ControlEntry entry,
AcceptInfo info 
)
inlineprivate

◆ allow_impl()

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
bool mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::allow_impl ( ControlEntry entry,
AcceptInfo info 
)
inlineprivate

◆ clear()

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
void mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::clear ( )
inline

◆ duration_now() [1/2]

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
static milliseconds mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::duration_now ( const std::optional< time_point > &  value)
inlinestaticprivate

◆ duration_now() [2/2]

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
static milliseconds mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::duration_now ( const time_point value)
inlinestaticprivate

◆ operator=()

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
RateControlFor & mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::operator= ( const RateControlFor< ControlType, measure_time_in_seconds > &  other)
inline

◆ size()

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
size_t mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::size ( ) const
inline

Member Data Documentation

◆ block_after_

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
std::optional<uint64_t> mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::block_after_ {}
private

◆ block_for_

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
milliseconds mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::block_for_
private

◆ entries_

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
std::map<ControlType, ControlEntry> mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::entries_
private

◆ entries_mutex_

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
std::mutex mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::entries_mutex_
private

◆ minimum_time_between_requests_

template<typename ControlType , uint64_t measure_time_in_seconds = 60>
std::optional<milliseconds> mrs::authentication::RateControlFor< ControlType, measure_time_in_seconds >::minimum_time_between_requests_
private

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