check_function_exists(backtrace_symbols HAVE_BACKTRACE_SYMBOLS)
check_function_exists(pipe2 HAVE_PIPE2)
check_library_exists(dl dladdr "dlfcn.h" HAVE_DLADDR)
-check_library_exists(crypto BIO_f_zlib "" HAVE_BIOZLIB)
check_library_exists(execinfo backtrace_symbols "" HAVE_LIBEXECINFO)
if(HAVE_LIBEXECINFO)
)
endif()
-include(CPack)
\ No newline at end of file
+include(CPack)
#ifndef CONFIG_H
#define CONFIG_H
-#cmakedefine HAVE_BIOZLIB
#cmakedefine HAVE_BACKTRACE_SYMBOLS
#cmakedefine HAVE_PIPE2
#cmakedefine HAVE_VFORK
netstring.cpp networkstream.cpp object.cpp objectlock.cpp process.cpp
qstring.cpp ringbuffer.cpp scriptfunction.cpp scriptfunctionwrapper.cpp
scriptutils.cpp scriptvariable.cpp serializer.cpp socket.cpp stacktrace.cpp
- statsfunction.cpp stdiostream.cpp stream_bio.cpp stream.cpp streamlogger.cpp streamlogger.th
+ statsfunction.cpp stdiostream.cpp stream.cpp streamlogger.cpp streamlogger.th
sysloglogger.cpp sysloglogger.th tcpsocket.cpp threadpool.cpp timer.cpp
tlsstream.cpp tlsutility.cpp type.cpp unixsocket.cpp utility.cpp value.cpp
- value-operators.cpp workqueue.cpp zlibstream.cpp
+ value-operators.cpp workqueue.cpp
)
target_link_libraries(base ${CMAKE_DL_LIBS} ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} cJSON mmatch)
+++ /dev/null
-/******************************************************************************
- * Icinga 2 *
- * Copyright (C) 2012-2014 Icinga Development Team (http://www.icinga.org) *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software Foundation *
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
- ******************************************************************************/
-
-#include "base/stream_bio.h"
-
-using namespace icinga;
-
-static int I2Stream_new(BIO *bi);
-static int I2Stream_free(BIO *bi);
-static int I2Stream_read(BIO *bi, char *out, int outl);
-static int I2Stream_write(BIO *bi, const char *in, int inl);
-static long I2Stream_ctrl(BIO *bi, int cmd, long num, void *ptr);
-
-#define BIO_TYPE_I2STREAM (99|0x0400|0x0100)
-
-static BIO_METHOD I2Stream_method =
-{
- BIO_TYPE_I2STREAM,
- "Icinga Stream",
- I2Stream_write,
- I2Stream_read,
- NULL,
- NULL,
- I2Stream_ctrl,
- I2Stream_new,
- I2Stream_free,
- NULL,
-};
-
-typedef struct I2Stream_bio_s
-{
- Stream::Ptr StreamObj;
- boost::exception_ptr Exception;
-} I2Stream_bio_t;
-
-BIO_METHOD *BIO_s_I2Stream(void)
-{
- return &I2Stream_method;
-}
-
-BIO *icinga::BIO_new_I2Stream(const Stream::Ptr& stream)
-{
- BIO *bi = BIO_new(BIO_s_I2Stream());
-
- if (bi == NULL)
- return NULL;
-
- I2Stream_bio_t *bp = (I2Stream_bio_t *)bi->ptr;
-
- bp->StreamObj = stream;
-
- return bi;
-}
-
-void icinga::I2Stream_check_exception(BIO *bi) {
- I2Stream_bio_t *bp = (I2Stream_bio_t *)bi->ptr;
-
- if (bp->Exception) {
- boost::exception_ptr ptr = bp->Exception;
- bp->Exception = boost::exception_ptr();
- rethrow_exception(ptr);
- }
-}
-
-static int I2Stream_new(BIO *bi)
-{
- bi->shutdown = 0;
- bi->init = 1;
- bi->num = -1;
- bi->ptr = new I2Stream_bio_t;
-
- return 1;
-}
-
-static int I2Stream_free(BIO *bi)
-{
- I2Stream_bio_t *bp = (I2Stream_bio_t *)bi->ptr;
- delete bp;
-
- return 1;
-}
-
-static int I2Stream_read(BIO *bi, char *out, int outl)
-{
- I2Stream_bio_t *bp = (I2Stream_bio_t *)bi->ptr;
-
- size_t data_read;
-
- BIO_clear_retry_flags(bi);
-
- try {
- data_read = bp->StreamObj->Read(out, outl);
- } catch (...) {
- bp->Exception = boost::current_exception();
- return -1;
- }
-
- if (data_read == 0 && !bp->StreamObj->IsEof()) {
- BIO_set_retry_read(bi);
- return -1;
- }
-
- return data_read;
-}
-
-static int I2Stream_write(BIO *bi, const char *in, int inl)
-{
- I2Stream_bio_t *bp = (I2Stream_bio_t *)bi->ptr;
- bp->StreamObj->Write(in, inl);
- return inl;
-}
-
-static long I2Stream_ctrl(BIO *, int cmd, long, void *)
-{
- switch (cmd) {
- case BIO_CTRL_FLUSH:
- return 1;
- default:
- return 0;
- }
-}
+++ /dev/null
-/******************************************************************************
- * Icinga 2 *
- * Copyright (C) 2012-2014 Icinga Development Team (http://www.icinga.org) *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software Foundation *
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
- ******************************************************************************/
-
-#ifndef STREAMBIO_H
-#define STREAMBIO_H
-
-#include "base/i2-base.h"
-#include "base/stream.h"
-#include "base/tlsutility.h"
-
-namespace icinga
-{
-
-BIO *BIO_new_I2Stream(const Stream::Ptr& stream);
-void I2Stream_check_exception(BIO *bi);
-
-}
-
-#endif /* STREAMBIO_H */
+++ /dev/null
-/******************************************************************************
- * Icinga 2 *
- * Copyright (C) 2012-2014 Icinga Development Team (http://www.icinga.org) *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software Foundation *
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
- ******************************************************************************/
-
-#include "base/zlibstream.h"
-#include "base/objectlock.h"
-#include <boost/make_shared.hpp>
-
-#ifdef HAVE_BIOZLIB
-
-using namespace icinga;
-
-extern "C" BIO_METHOD *BIO_f_zlib(void);
-
-/**
- * Constructor for the ZlibStream class.
- *
- * @param innerStream The inner stream.
- * @param compress Whether we're compressing, false if we're decompressing.
- */
-ZlibStream::ZlibStream(const Stream::Ptr& innerStream)
- : m_InnerStream(innerStream)
-{
- BIO *ibio = BIO_new_I2Stream(innerStream);
- BIO *zbio = BIO_new(BIO_f_zlib());
- m_BIO = BIO_push(zbio, ibio);
-}
-
-ZlibStream::~ZlibStream(void)
-{
- Close();
-}
-
-size_t ZlibStream::Read(void *buffer, size_t size)
-{
- ObjectLock olock(this);
-
- return BIO_read(m_BIO, buffer, size);
-}
-
-void ZlibStream::Write(const void *buffer, size_t size)
-{
- ObjectLock olock(this);
-
- BIO_write(m_BIO, buffer, size);
-}
-
-void ZlibStream::Close(void)
-{
- ObjectLock olock(this);
-
- if (m_BIO) {
- BIO_free_all(m_BIO);
- m_BIO = NULL;
-
- m_InnerStream->Close();
- }
-}
-
-bool ZlibStream::IsEof(void) const
-{
- ObjectLock olock(this);
-
- return BIO_eof(m_BIO);
-}
-
-#endif /* HAVE_BIOZLIB */
+++ /dev/null
-/******************************************************************************
- * Icinga 2 *
- * Copyright (C) 2012-2014 Icinga Development Team (http://www.icinga.org) *
- * *
- * This program is free software; you can redistribute it and/or *
- * modify it under the terms of the GNU General Public License *
- * as published by the Free Software Foundation; either version 2 *
- * of the License, or (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the Free Software Foundation *
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. *
- ******************************************************************************/
-
-#ifndef ZLIBSTREAM_H
-#define ZLIBSTREAM_H
-
-#include "base/i2-base.h"
-#include "base/stream_bio.h"
-#include <iostream>
-
-#ifdef HAVE_BIOZLIB
-
-namespace icinga {
-
-class I2_BASE_API ZlibStream : public Stream
-{
-public:
- DECLARE_PTR_TYPEDEFS(ZlibStream);
-
- ZlibStream(const Stream::Ptr& innerStream);
- ~ZlibStream(void);
-
- virtual size_t Read(void *buffer, size_t size);
- virtual void Write(const void *buffer, size_t size);
-
- virtual void Close(void);
-
- virtual bool IsEof(void) const;
-
-private:
- Stream::Ptr m_InnerStream;
- BIO *m_BIO;
-};
-
-}
-
-#endif /* HAVE_BIOZLIB */
-
-#endif /* ZLIBSTREAM_H */
#include "base/objectlock.h"
#include "base/stdiostream.h"
#include "base/networkstream.h"
-#include "base/zlibstream.h"
#include "base/application.h"
#include "base/context.h"
#include "base/statsfunction.h"
return;
}
- StdioStream::Ptr logStream = make_shared<StdioStream>(fp, true);
-#ifdef HAVE_BIOZLIB
- m_LogFile = make_shared<ZlibStream>(logStream);
-#else /* HAVE_BIOZLIB */
- m_LogFile = logStream;
-#endif /* HAVE_BIOZLIB */
+ m_LogFile = make_shared<StdioStream>(fp, true);
m_LogMessageCount = 0;
SetLogMessageTimestamp(Utility::GetTime());
}
std::fstream *fp = new std::fstream(path.CStr(), std::fstream::in);
StdioStream::Ptr logStream = make_shared<StdioStream>(fp, true);
-#ifdef HAVE_BIOZLIB
- ZlibStream::Ptr lstream = make_shared<ZlibStream>(logStream);
-#else /* HAVE_BIOZLIB */
- Stream::Ptr lstream = logStream;
-#endif /* HAVE_BIOZLIB */
String message;
while (true) {
Dictionary::Ptr pmessage;
try {
- if (!NetString::ReadStringFromStream(lstream, &message))
+ if (!NetString::ReadStringFromStream(logStream, &message))
break;
pmessage = JsonDeserialize(message);
peer_ts = pmessage->Get("timestamp");
}
- lstream->Close();
+ logStream->Close();
}
Log(LogInformation, "cluster", "Replayed " + Convert::ToString(count) + " messages.");
{
ObjectLock olock(this);
return m_AnonymousClients;
-}
\ No newline at end of file
+}