Kea  2.3.7
isc::http::HttpClientImpl Class Reference

HttpClient implementation. More...

Public Member Functions

 HttpClientImpl (IOService &io_service, size_t thread_pool_size=0, bool defer_thread_start=false)
 Constructor. More...
 
 ~HttpClientImpl ()
 Destructor. More...
 
void checkPermissions ()
 Check if the current thread can perform thread pool state transition. More...
 
uint16_t getThreadCount ()
 Fetches the number of threads in the pool. More...
 
asiolink::IOServicePtr getThreadIOService ()
 Fetches the internal IOService used in multi-threaded mode. More...
 
uint16_t getThreadPoolSize ()
 Fetches the maximum size of the thread pool. More...
 
bool isPaused ()
 Indicates if the thread pool is paused. More...
 
bool isRunning ()
 Indicates if the thread pool is running. More...
 
bool isStopped ()
 Indicates if the thread pool is stopped. More...
 
void pause ()
 Pauses the client's thread pool. More...
 
void resume ()
 Resumes running the client's thread pool. More...
 
void start ()
 Starts running the client's thread pool, if multi-threaded. More...
 
void stop ()
 Close all connections, and if multi-threaded, stops the client's thread pool. More...
 

Public Attributes

ConnectionPoolPtr conn_pool_
 Holds a pointer to the connection pool. More...
 

Detailed Description

HttpClient implementation.

Definition at line 1761 of file client.cc.

Constructor & Destructor Documentation

◆ HttpClientImpl()

isc::http::HttpClientImpl::HttpClientImpl ( IOService io_service,
size_t  thread_pool_size = 0,
bool  defer_thread_start = false 
)
inline

Constructor.

If single-threading:

  • Creates the connection pool passing in the caller's IOService and a maximum number of connections per URL value of 1. If multi-threading:
  • Creates a private IOService
  • Creates a thread pool with the thread_pool_size threads
  • Creates the connection pool passing the private IOService and the thread_pool_size as the maximum number of connections per URL.
Parameters
io_serviceIOService that will drive connection IO in single threaded mode. (Currently ignored in multi-threaded mode)
thread_pool_sizemaximum number of concurrent threads Internally this also sets the maximum number of concurrent connections per URL.
defer_thread_startWhen true, starting of the pool threads is deferred until a subsequent call to start(). In this case the pool's operational state after construction is STOPPED. Otherwise, the thread pool threads will be created and started, with the operational state being RUNNING. Applicable only when thread-pool size is greater than zero.

Definition at line 1786 of file client.cc.

References conn_pool_, isc::log::DBGLVL_TRACE_BASIC, isc::http::HTTP_CLIENT_MT_STARTED, isc::http::http_logger, and LOG_DEBUG.

◆ ~HttpClientImpl()

isc::http::HttpClientImpl::~HttpClientImpl ( )
inline

Destructor.

Calls stop().

Definition at line 1813 of file client.cc.

References stop().

+ Here is the call graph for this function:

Member Function Documentation

◆ checkPermissions()

void isc::http::HttpClientImpl::checkPermissions ( )
inline

Check if the current thread can perform thread pool state transition.

Exceptions
MultiThreadingInvalidOperationif the state transition is done on any of the worker threads.

Definition at line 1822 of file client.cc.

◆ getThreadCount()

uint16_t isc::http::HttpClientImpl::getThreadCount ( )
inline

Fetches the number of threads in the pool.

Returns
the number of running threads.

Definition at line 1927 of file client.cc.

◆ getThreadIOService()

asiolink::IOServicePtr isc::http::HttpClientImpl::getThreadIOService ( )
inline

Fetches the internal IOService used in multi-threaded mode.

Returns
A pointer to the IOService, or an empty pointer when in single-threaded mode.

Definition at line 1913 of file client.cc.

◆ getThreadPoolSize()

uint16_t isc::http::HttpClientImpl::getThreadPoolSize ( )
inline

Fetches the maximum size of the thread pool.

Returns
the maximum size of the thread pool.

Definition at line 1920 of file client.cc.

◆ isPaused()

bool isc::http::HttpClientImpl::isPaused ( )
inline

Indicates if the thread pool is paused.

Returns
True if the thread pool exists and it is in the PAUSED state, false otherwise.

Definition at line 1901 of file client.cc.

◆ isRunning()

bool isc::http::HttpClientImpl::isRunning ( )
inline

Indicates if the thread pool is running.

Returns
True if the thread pool exists and it is in the RUNNING state, false otherwise.

Definition at line 1877 of file client.cc.

◆ isStopped()

bool isc::http::HttpClientImpl::isStopped ( )
inline

Indicates if the thread pool is stopped.

Returns
True if the thread pool exists and it is in the STOPPED state, false otherwise.

Definition at line 1889 of file client.cc.

◆ pause()

void isc::http::HttpClientImpl::pause ( )
inline

Pauses the client's thread pool.

Suspends thread pool event processing.

Exceptions
InvalidOperationif the thread pool does not exist.

Definition at line 1851 of file client.cc.

References isc_throw.

◆ resume()

void isc::http::HttpClientImpl::resume ( )
inline

Resumes running the client's thread pool.

Resumes thread pool event processing.

Exceptions
InvalidOperationif the thread pool does not exist.

Definition at line 1864 of file client.cc.

References isc_throw.

◆ start()

void isc::http::HttpClientImpl::start ( )
inline

Starts running the client's thread pool, if multi-threaded.

Definition at line 1829 of file client.cc.

◆ stop()

void isc::http::HttpClientImpl::stop ( )
inline

Close all connections, and if multi-threaded, stops the client's thread pool.

Definition at line 1837 of file client.cc.

References conn_pool_.

Referenced by ~HttpClientImpl().

Member Data Documentation

◆ conn_pool_

ConnectionPoolPtr isc::http::HttpClientImpl::conn_pool_

Holds a pointer to the connection pool.

Definition at line 1935 of file client.cc.

Referenced by HttpClientImpl(), and stop().


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