Kea  1.5.0
watched_thread.h
Go to the documentation of this file.
1 // Copyright (C) 2018 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 WATCHED_THREAD_H
8 #define WATCHED_THREAD_H
9 
10 #include <util/watch_socket.h>
11 #include <util/threads/thread.h>
12 
13 #include <boost/shared_ptr.hpp>
14 
15 namespace isc {
16 namespace util {
17 namespace thread {
18 
27 public:
30  enum WatchType {
31  ERROR = 0,
32  READY = 1,
34  };
35 
38 
40  virtual ~WatchedThread(){}
41 
46  int getWatchFd(WatchType watch_type);
47 
51  void markReady(WatchType watch_type);
52 
57  bool isReady(WatchType watch_type);
58 
62  void clearReady(WatchType watch_type);
63 
71  bool shouldTerminate();
72 
78  void start(const boost::function<void()>& thread_main);
79 
81  bool isRunning() {
82  return (thread_ != 0);
83  }
84 
90  void stop();
91 
98  void setError(const std::string& error_msg);
99 
103  std::string getLastError();
104 
106  std::string last_error_;
107 
117 
120 };
121 
123 typedef boost::shared_ptr<WatchedThread> WatchedThreadPtr;
124 
125 }; // namespace isc::util::thread
126 }; // namespace isc::util
127 }; // namespace isc
128 
129 #endif // WATCHED_THREAD_H
int getWatchFd(WatchType watch_type)
Fetches the fd of a watch socket.
void setError(const std::string &error_msg)
Sets the error state.
boost::shared_ptr< WatchedThread > WatchedThreadPtr
Defines a pointer to a WatchedThread.
bool isReady(WatchType watch_type)
Indicates if a watch socket state is ready.
void start(const boost::function< void()> &thread_main)
Creates and runs the thread.
void markReady(WatchType watch_type)
Sets a watch socket state to ready.
thread::ThreadPtr thread_
Current thread instance.
std::string getLastError()
Fetches the error message text for the most recent error.
WatchType
Enumerates the list of watch sockets used to mark events These are used as arguments to watch socket ...
bool shouldTerminate()
Checks if the thread should terminate.
Defines the class, WatchSocket.
void clearReady(WatchType watch_type)
Sets a watch socket state to not ready.
bool isRunning()
Returns true if the thread is running.
Provides an IO "ready" semaphore for use with select() or poll() WatchSocket exposes a single open fi...
Definition: watch_socket.h:47
void stop()
Terminates the thread.
Defines the logger used by the top-level component of kea-dhcp-ddns.
boost::shared_ptr< Thread > ThreadPtr
Thread pointer type.
Definition: thread.h:101
WatchSocket sockets_[TERMINATE+1]
WatchSockets that are used to communicate with the owning thread There are three:ERROR - Marked as re...
virtual ~WatchedThread()
Virtual destructor.
Provides a thread and controls for monitoring its activities.
std::string last_error_
Error message of the last error encountered.