Kea 2.7.0
cmd_http_listener.h
Go to the documentation of this file.
1// Copyright (C) 2021-2022 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#ifndef CMD_HTTP_LISTENER_H
8#define CMD_HTTP_LISTENER_H
9
10#include <asiolink/io_address.h>
11#include <asiolink/io_service.h>
13#include <http/listener.h>
14#include <thread>
15#include <vector>
16
17namespace isc {
18namespace config {
19
33public:
35 CmdHttpListener(const asiolink::IOAddress& address, const uint16_t port,
36 const uint16_t thread_pool_size = 1,
38
40 virtual ~CmdHttpListener();
41
47 void checkPermissions();
48
50 void start();
51
55 void pause();
56
60 void resume();
61
63 void stop();
64
69 bool isRunning();
70
75 bool isStopped();
76
81 bool isPaused();
82
87 return (address_);
88 }
89
93 uint16_t getPort() const {
94 return (port_);
95 }
96
100 uint16_t getThreadPoolSize() const {
101 return (thread_pool_size_);
102 }
103
108 return (tls_context_);
109 }
110
114 uint16_t getThreadCount() const {
115 if (!thread_pool_) {
116 return (0);
117 }
118
119 return (thread_pool_->getThreadCount());
120 }
121
128 return (thread_io_service_);
129 }
130
131private:
134
136 uint16_t port_;
137
139 isc::asiolink::IOServicePtr thread_io_service_;
140
142 http::HttpListenerPtr http_listener_;
143
145 std::size_t thread_pool_size_;
146
149
151 asiolink::TlsContextPtr tls_context_;
152};
153
155typedef boost::shared_ptr<CmdHttpListener> CmdHttpListenerPtr;
156
157} // namespace isc::config
158} // namespace isc
159
160#endif // CMD_HTTP_LISTENER_H
A multi-threaded HTTP listener that can process API commands requests.
uint16_t getThreadCount() const
Fetches the number of threads in the pool.
uint16_t getThreadPoolSize() const
Fetches the maximum size of the thread pool.
uint16_t getPort() const
Fetches the port number on which to listen.
void checkPermissions()
Check if the current thread can perform thread pool state transition.
isc::asiolink::IOAddress getAddress() const
Fetches the IP address on which to listen.
void start()
Starts running the listener's thread pool.
virtual ~CmdHttpListener()
Destructor.
asiolink::TlsContextPtr getTlsContext() const
Fetches the TLS context.
bool isPaused()
Indicates if the thread pool is paused.
CmdHttpListener(const asiolink::IOAddress &address, const uint16_t port, const uint16_t thread_pool_size=1, asiolink::TlsContextPtr context=asiolink::TlsContextPtr())
Constructor.
asiolink::IOServicePtr getThreadIOService() const
Fetches a pointer to the internal IOService used to drive the thread-pool in multi-threaded mode.
void pause()
Pauses the listener's thread pool.
void resume()
Resumes running the listener's thread pool.
bool isRunning()
Indicates if the thread pool is running.
void stop()
Stops the listener's thread pool.
bool isStopped()
Indicates if the thread pool is stopped.
boost::shared_ptr< CmdHttpListener > CmdHttpListenerPtr
Defines a shared pointer to CmdHttpListener.
boost::shared_ptr< HttpListener > HttpListenerPtr
Pointer to the HttpListener.
Definition listener.h:139
Defines the logger used by the top-level component of kea-lfc.