Kea  2.3.5-git
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 
17 namespace isc {
18 namespace config {
19 
33 public:
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 
131 private:
133  isc::asiolink::IOAddress address_;
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 
155 typedef boost::shared_ptr<CmdHttpListener> CmdHttpListenerPtr;
156 
157 } // namespace isc::config
158 } // namespace isc
159 
160 #endif // CMD_HTTP_LISTENER_H
bool isStopped()
Indicates if the thread pool is stopped.
virtual ~CmdHttpListener()
Destructor.
boost::shared_ptr< CmdHttpListener > CmdHttpListenerPtr
Defines a shared pointer to CmdHttpListener.
void stop()
Stops the listener&#39;s thread pool.
bool isPaused()
Indicates if the thread pool is paused.
uint16_t getThreadPoolSize() const
Fetches the maximum size of the thread pool.
Defines the logger used by the top-level component of kea-lfc.
bool isRunning()
Indicates if the thread pool is running.
asiolink::TlsContextPtr getTlsContext() const
Fetches the TLS context.
void checkPermissions()
Check if the current thread can perform thread pool state transition.
A multi-threaded HTTP listener that can process API commands requests.
CmdHttpListener(const asiolink::IOAddress &address, const uint16_t port, const uint16_t thread_pool_size=1, asiolink::TlsContextPtr context=asiolink::TlsContextPtr())
Constructor.
boost::shared_ptr< HttpListener > HttpListenerPtr
Pointer to the HttpListener.
Definition: listener.h:139
uint16_t getPort() const
Fetches the port number on which to listen.
isc::asiolink::IOAddress getAddress() const
Fetches the IP address on which to listen.
void start()
Starts running the listener&#39;s thread pool.
uint16_t getThreadCount() const
Fetches the number of threads in the pool.
void resume()
Resumes running the listener&#39;s thread pool.
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&#39;s thread pool.