m_Listener = socket;
- boost::thread thread(boost::bind(&LivestatusComponent::ServerThreadProc, this, socket));
- thread.detach();
+ m_Thread = boost::thread(boost::bind(&LivestatusComponent::ServerThreadProc, this, socket));
+ m_Thread.detach();
+}
+
+/**
+ * Stops the component.
+ */
+void LivestatusComponent::Stop(void)
+{
+ m_Listener->Close();
+
+ Log(LogInformation, "livestatus", "Socket closed.");
+
+ m_Thread.join();
}
String LivestatusComponent::GetSocketPath(void) const
#include "livestatus/query.h"
#include "base/dynamicobject.h"
#include "base/socket.h"
+#include <boost/thread/thread.hpp>
using namespace icinga;
LivestatusComponent(const Dictionary::Ptr& serializedUpdate);
virtual void Start(void);
+ virtual void Stop(void);
String GetSocketPath(void) const;
private:
+ boost::thread m_Thread;
+
Attribute<String> m_SocketPath;
Socket::Ptr m_Listener;