diff --git a/lib/base/netstring.cpp b/lib/base/netstring.cpp index 2be7675a7..fb8098a65 100644 --- a/lib/base/netstring.cpp +++ b/lib/base/netstring.cpp @@ -126,7 +126,7 @@ size_t NetString::WriteStringToStream(const Stream::Ptr& stream, const String& s * @exception invalid_argument The input stream is invalid. * @see https://github.com/PeterScott/netstring-c/blob/master/netstring.c */ -String NetString::ReadStringFromStream(const std::shared_ptr& stream, +String NetString::ReadStringFromStream(const Shared::Ptr& stream, ssize_t maxMessageLength) { namespace asio = boost::asio; @@ -205,7 +205,7 @@ String NetString::ReadStringFromStream(const std::shared_ptr& str * @exception invalid_argument The input stream is invalid. * @see https://github.com/PeterScott/netstring-c/blob/master/netstring.c */ -String NetString::ReadStringFromStream(const std::shared_ptr& stream, +String NetString::ReadStringFromStream(const Shared::Ptr& stream, boost::asio::yield_context yc, ssize_t maxMessageLength) { namespace asio = boost::asio; @@ -284,7 +284,7 @@ String NetString::ReadStringFromStream(const std::shared_ptr& str * * @return The amount of bytes written. */ -size_t NetString::WriteStringToStream(const std::shared_ptr& stream, const String& str) +size_t NetString::WriteStringToStream(const Shared::Ptr& stream, const String& str) { namespace asio = boost::asio; @@ -307,7 +307,7 @@ size_t NetString::WriteStringToStream(const std::shared_ptr& stre * * @return The amount of bytes written. */ -size_t NetString::WriteStringToStream(const std::shared_ptr& stream, const String& str, boost::asio::yield_context yc) +size_t NetString::WriteStringToStream(const Shared::Ptr& stream, const String& str, boost::asio::yield_context yc) { namespace asio = boost::asio; diff --git a/lib/base/netstring.hpp b/lib/base/netstring.hpp index 2d2435907..e5ec051de 100644 --- a/lib/base/netstring.hpp +++ b/lib/base/netstring.hpp @@ -26,12 +26,12 @@ class NetString public: static StreamReadStatus ReadStringFromStream(const Stream::Ptr& stream, String *message, StreamReadContext& context, bool may_wait = false, ssize_t maxMessageLength = -1); - static String ReadStringFromStream(const std::shared_ptr& stream, ssize_t maxMessageLength = -1); - static String ReadStringFromStream(const std::shared_ptr& stream, + static String ReadStringFromStream(const Shared::Ptr& stream, ssize_t maxMessageLength = -1); + static String ReadStringFromStream(const Shared::Ptr& stream, boost::asio::yield_context yc, ssize_t maxMessageLength = -1); static size_t WriteStringToStream(const Stream::Ptr& stream, const String& message); - static size_t WriteStringToStream(const std::shared_ptr& stream, const String& message); - static size_t WriteStringToStream(const std::shared_ptr& stream, const String& message, boost::asio::yield_context yc); + static size_t WriteStringToStream(const Shared::Ptr& stream, const String& message); + static size_t WriteStringToStream(const Shared::Ptr& stream, const String& message, boost::asio::yield_context yc); static void WriteStringToStream(std::ostream& stream, const String& message); private: diff --git a/lib/base/tlsstream.hpp b/lib/base/tlsstream.hpp index 70a459114..1d81f7793 100644 --- a/lib/base/tlsstream.hpp +++ b/lib/base/tlsstream.hpp @@ -4,6 +4,7 @@ #define TLSSTREAM_H #include "base/i2-base.hpp" +#include "base/shared.hpp" #include "base/socket.hpp" #include "base/stream.hpp" #include "base/tlsutility.hpp" @@ -85,7 +86,7 @@ private: }; typedef boost::asio::buffered_stream AsioTcpStream; -typedef std::pair, std::shared_ptr> OptionalTlsStream; +typedef std::pair::Ptr, std::shared_ptr> OptionalTlsStream; } diff --git a/lib/cli/consolecommand.cpp b/lib/cli/consolecommand.cpp index 9f8a2cf8a..41dcdf99a 100644 --- a/lib/cli/consolecommand.cpp +++ b/lib/cli/consolecommand.cpp @@ -42,7 +42,7 @@ namespace po = boost::program_options; static ScriptFrame *l_ScriptFrame; static Url::Ptr l_Url; -static std::shared_ptr l_TlsStream; +static Shared::Ptr l_TlsStream; static String l_Session; REGISTER_CLICOMMAND("console", ConsoleCommand); @@ -522,7 +522,7 @@ incomplete: * * @returns AsioTlsStream pointer for future HTTP connections. */ -std::shared_ptr ConsoleCommand::Connect() +Shared::Ptr ConsoleCommand::Connect() { std::shared_ptr sslContext; @@ -537,7 +537,7 @@ std::shared_ptr ConsoleCommand::Connect() String host = l_Url->GetHost(); String port = l_Url->GetPort(); - std::shared_ptr stream = std::make_shared(IoEngine::Get().GetIoContext(), *sslContext, host); + Shared::Ptr stream = Shared::Make(IoEngine::Get().GetIoContext(), *sslContext, host); try { icinga::Connect(stream->lowest_layer(), host, port); diff --git a/lib/cli/consolecommand.hpp b/lib/cli/consolecommand.hpp index 95d6dce12..973ca7f19 100644 --- a/lib/cli/consolecommand.hpp +++ b/lib/cli/consolecommand.hpp @@ -40,7 +40,7 @@ private: mutable boost::mutex m_Mutex; mutable boost::condition_variable m_CV; - static std::shared_ptr Connect(); + static Shared::Ptr Connect(); static Value ExecuteScript(const String& session, const String& command, bool sandboxed); static Array::Ptr AutoCompleteScript(const String& session, const String& command, bool sandboxed); diff --git a/lib/perfdata/elasticsearchwriter.cpp b/lib/perfdata/elasticsearchwriter.cpp index 7798ad8dc..a9d38d36f 100644 --- a/lib/perfdata/elasticsearchwriter.cpp +++ b/lib/perfdata/elasticsearchwriter.cpp @@ -598,7 +598,8 @@ OptionalTlsStream ElasticsearchWriter::Connect() throw; } - stream.first = std::make_shared(IoEngine::Get().GetIoContext(), *sslContext, GetHost()); + stream.first = Shared::Make(IoEngine::Get().GetIoContext(), *sslContext, GetHost()); + } else { stream.second = std::make_shared(IoEngine::Get().GetIoContext()); } diff --git a/lib/perfdata/gelfwriter.cpp b/lib/perfdata/gelfwriter.cpp index c778a3813..3094dd71f 100644 --- a/lib/perfdata/gelfwriter.cpp +++ b/lib/perfdata/gelfwriter.cpp @@ -173,7 +173,8 @@ void GelfWriter::ReconnectInternal() throw; } - m_Stream.first = std::make_shared(IoEngine::Get().GetIoContext(), *sslContext, GetHost()); + m_Stream.first = Shared::Make(IoEngine::Get().GetIoContext(), *sslContext, GetHost()); + } else { m_Stream.second = std::make_shared(IoEngine::Get().GetIoContext()); } diff --git a/lib/perfdata/influxdbwriter.cpp b/lib/perfdata/influxdbwriter.cpp index 1e02e5213..866dc25a0 100644 --- a/lib/perfdata/influxdbwriter.cpp +++ b/lib/perfdata/influxdbwriter.cpp @@ -187,7 +187,8 @@ OptionalTlsStream InfluxdbWriter::Connect() throw; } - stream.first = std::make_shared(IoEngine::Get().GetIoContext(), *sslContext, GetHost()); + stream.first = Shared::Make(IoEngine::Get().GetIoContext(), *sslContext, GetHost()); + } else { stream.second = std::make_shared(IoEngine::Get().GetIoContext()); } diff --git a/lib/remote/apilistener.cpp b/lib/remote/apilistener.cpp index 81385e6da..a712376a9 100644 --- a/lib/remote/apilistener.cpp +++ b/lib/remote/apilistener.cpp @@ -431,7 +431,7 @@ void ApiListener::ListenerCoroutineProc(boost::asio::yield_context yc, const std for (;;) { try { - auto sslConn (std::make_shared(io, *sslContext)); + auto sslConn (Shared::Make(io, *sslContext)); server->async_accept(sslConn->lowest_layer(), yc); @@ -470,7 +470,7 @@ void ApiListener::AddConnection(const Endpoint::Ptr& endpoint) << "Reconnecting to endpoint '" << endpoint->GetName() << "' via host '" << host << "' and port '" << port << "'"; try { - auto sslConn (std::make_shared(io, *sslContext, endpoint->GetName())); + auto sslConn (Shared::Make(io, *sslContext, endpoint->GetName())); Connect(sslConn->lowest_layer(), host, port, yc); @@ -488,7 +488,7 @@ void ApiListener::AddConnection(const Endpoint::Ptr& endpoint) }); } -void ApiListener::NewClientHandler(boost::asio::yield_context yc, const std::shared_ptr& client, const String& hostname, ConnectionRole role) +void ApiListener::NewClientHandler(boost::asio::yield_context yc, const Shared::Ptr& client, const String& hostname, ConnectionRole role) { try { NewClientHandlerInternal(yc, client, hostname, role); @@ -506,7 +506,7 @@ void ApiListener::NewClientHandler(boost::asio::yield_context yc, const std::sha * * @param client The new client. */ -void ApiListener::NewClientHandlerInternal(boost::asio::yield_context yc, const std::shared_ptr& client, const String& hostname, ConnectionRole role) +void ApiListener::NewClientHandlerInternal(boost::asio::yield_context yc, const Shared::Ptr& client, const String& hostname, ConnectionRole role) { namespace asio = boost::asio; namespace ssl = asio::ssl; diff --git a/lib/remote/apilistener.hpp b/lib/remote/apilistener.hpp index ecbeed415..cf5abe9e3 100644 --- a/lib/remote/apilistener.hpp +++ b/lib/remote/apilistener.hpp @@ -150,8 +150,8 @@ private: bool AddListener(const String& node, const String& service); void AddConnection(const Endpoint::Ptr& endpoint); - void NewClientHandler(boost::asio::yield_context yc, const std::shared_ptr& client, const String& hostname, ConnectionRole role); - void NewClientHandlerInternal(boost::asio::yield_context yc, const std::shared_ptr& client, const String& hostname, ConnectionRole role); + void NewClientHandler(boost::asio::yield_context yc, const Shared::Ptr& client, const String& hostname, ConnectionRole role); + void NewClientHandlerInternal(boost::asio::yield_context yc, const Shared::Ptr& client, const String& hostname, ConnectionRole role); void ListenerCoroutineProc(boost::asio::yield_context yc, const std::shared_ptr& server, const std::shared_ptr& sslContext); WorkQueue m_RelayQueue; diff --git a/lib/remote/httpserverconnection.cpp b/lib/remote/httpserverconnection.cpp index cdbcc7c57..d4eac7d07 100644 --- a/lib/remote/httpserverconnection.cpp +++ b/lib/remote/httpserverconnection.cpp @@ -34,12 +34,12 @@ using namespace icinga; auto const l_ServerHeader ("Icinga/" + Application::GetAppVersion()); -HttpServerConnection::HttpServerConnection(const String& identity, bool authenticated, const std::shared_ptr& stream) +HttpServerConnection::HttpServerConnection(const String& identity, bool authenticated, const Shared::Ptr& stream) : HttpServerConnection(identity, authenticated, stream, IoEngine::Get().GetIoContext()) { } -HttpServerConnection::HttpServerConnection(const String& identity, bool authenticated, const std::shared_ptr& stream, boost::asio::io_context& io) +HttpServerConnection::HttpServerConnection(const String& identity, bool authenticated, const Shared::Ptr& stream, boost::asio::io_context& io) : m_Stream(stream), m_Seen(Utility::GetTime()), m_IoStrand(io), m_ShuttingDown(false), m_HasStartedStreaming(false), m_CheckLivenessTimer(io) { diff --git a/lib/remote/httpserverconnection.hpp b/lib/remote/httpserverconnection.hpp index 43851e76e..9c812e526 100644 --- a/lib/remote/httpserverconnection.hpp +++ b/lib/remote/httpserverconnection.hpp @@ -25,7 +25,7 @@ class HttpServerConnection final : public Object public: DECLARE_PTR_TYPEDEFS(HttpServerConnection); - HttpServerConnection(const String& identity, bool authenticated, const std::shared_ptr& stream); + HttpServerConnection(const String& identity, bool authenticated, const Shared::Ptr& stream); void Start(); void Disconnect(); @@ -35,7 +35,7 @@ public: private: ApiUser::Ptr m_ApiUser; - std::shared_ptr m_Stream; + Shared::Ptr m_Stream; double m_Seen; String m_PeerAddress; boost::asio::io_context::strand m_IoStrand; @@ -43,7 +43,7 @@ private: bool m_HasStartedStreaming; boost::asio::deadline_timer m_CheckLivenessTimer; - HttpServerConnection(const String& identity, bool authenticated, const std::shared_ptr& stream, boost::asio::io_context& io); + HttpServerConnection(const String& identity, bool authenticated, const Shared::Ptr& stream, boost::asio::io_context& io); void ProcessMessages(boost::asio::yield_context yc); void CheckLiveness(boost::asio::yield_context yc); diff --git a/lib/remote/jsonrpc.cpp b/lib/remote/jsonrpc.cpp index d17b5780f..58288001c 100644 --- a/lib/remote/jsonrpc.cpp +++ b/lib/remote/jsonrpc.cpp @@ -52,7 +52,7 @@ static bool GetDebugJsonRpcCached() * * @return The amount of bytes sent. */ -size_t JsonRpc::SendMessage(const std::shared_ptr& stream, const Dictionary::Ptr& message) +size_t JsonRpc::SendMessage(const Shared::Ptr& stream, const Dictionary::Ptr& message) { String json = JsonEncode(message); @@ -71,7 +71,7 @@ size_t JsonRpc::SendMessage(const std::shared_ptr& stream, const * * @return The amount of bytes sent. */ -size_t JsonRpc::SendMessage(const std::shared_ptr& stream, const Dictionary::Ptr& message, boost::asio::yield_context yc) +size_t JsonRpc::SendMessage(const Shared::Ptr& stream, const Dictionary::Ptr& message, boost::asio::yield_context yc) { return JsonRpc::SendRawMessage(stream, JsonEncode(message), yc); } @@ -85,7 +85,7 @@ size_t JsonRpc::SendMessage(const std::shared_ptr& stream, const * * @return bytes sent */ -size_t JsonRpc::SendRawMessage(const std::shared_ptr& stream, const String& json, boost::asio::yield_context yc) +size_t JsonRpc::SendRawMessage(const Shared::Ptr& stream, const String& json, boost::asio::yield_context yc) { #ifdef I2_DEBUG if (GetDebugJsonRpcCached()) @@ -104,7 +104,7 @@ size_t JsonRpc::SendRawMessage(const std::shared_ptr& stream, con * @return A JSON string */ -String JsonRpc::ReadMessage(const std::shared_ptr& stream, ssize_t maxMessageLength) +String JsonRpc::ReadMessage(const Shared::Ptr& stream, ssize_t maxMessageLength) { String jsonString = NetString::ReadStringFromStream(stream, maxMessageLength); @@ -125,7 +125,7 @@ String JsonRpc::ReadMessage(const std::shared_ptr& stream, ssize_ * * @return A JSON string */ -String JsonRpc::ReadMessage(const std::shared_ptr& stream, boost::asio::yield_context yc, ssize_t maxMessageLength) +String JsonRpc::ReadMessage(const Shared::Ptr& stream, boost::asio::yield_context yc, ssize_t maxMessageLength) { String jsonString = NetString::ReadStringFromStream(stream, yc, maxMessageLength); diff --git a/lib/remote/jsonrpc.hpp b/lib/remote/jsonrpc.hpp index cc4cc7b6d..3f3cdec88 100644 --- a/lib/remote/jsonrpc.hpp +++ b/lib/remote/jsonrpc.hpp @@ -21,12 +21,12 @@ namespace icinga class JsonRpc { public: - static size_t SendMessage(const std::shared_ptr& stream, const Dictionary::Ptr& message); - static size_t SendMessage(const std::shared_ptr& stream, const Dictionary::Ptr& message, boost::asio::yield_context yc); - static size_t SendRawMessage(const std::shared_ptr& stream, const String& json, boost::asio::yield_context yc); + static size_t SendMessage(const Shared::Ptr& stream, const Dictionary::Ptr& message); + static size_t SendMessage(const Shared::Ptr& stream, const Dictionary::Ptr& message, boost::asio::yield_context yc); + static size_t SendRawMessage(const Shared::Ptr& stream, const String& json, boost::asio::yield_context yc); - static String ReadMessage(const std::shared_ptr& stream, ssize_t maxMessageLength = -1); - static String ReadMessage(const std::shared_ptr& stream, boost::asio::yield_context yc, ssize_t maxMessageLength = -1); + static String ReadMessage(const Shared::Ptr& stream, ssize_t maxMessageLength = -1); + static String ReadMessage(const Shared::Ptr& stream, boost::asio::yield_context yc, ssize_t maxMessageLength = -1); static Dictionary::Ptr DecodeMessage(const String& message); diff --git a/lib/remote/jsonrpcconnection.cpp b/lib/remote/jsonrpcconnection.cpp index b6d1d41e6..22cb2b24e 100644 --- a/lib/remote/jsonrpcconnection.cpp +++ b/lib/remote/jsonrpcconnection.cpp @@ -30,13 +30,13 @@ REGISTER_APIFUNCTION(SetLogPosition, log, &SetLogPositionHandler); static RingBuffer l_TaskStats (15 * 60); JsonRpcConnection::JsonRpcConnection(const String& identity, bool authenticated, - const std::shared_ptr& stream, ConnectionRole role) + const Shared::Ptr& stream, ConnectionRole role) : JsonRpcConnection(identity, authenticated, stream, role, IoEngine::Get().GetIoContext()) { } JsonRpcConnection::JsonRpcConnection(const String& identity, bool authenticated, - const std::shared_ptr& stream, ConnectionRole role, boost::asio::io_context& io) + const Shared::Ptr& stream, ConnectionRole role, boost::asio::io_context& io) : m_Identity(identity), m_Authenticated(authenticated), m_Stream(stream), m_Role(role), m_Timestamp(Utility::GetTime()), m_Seen(Utility::GetTime()), m_NextHeartbeat(0), m_IoStrand(io), m_OutgoingMessagesQueued(io), m_WriterDone(io), m_ShuttingDown(false), @@ -158,7 +158,7 @@ Endpoint::Ptr JsonRpcConnection::GetEndpoint() const return m_Endpoint; } -std::shared_ptr JsonRpcConnection::GetStream() const +Shared::Ptr JsonRpcConnection::GetStream() const { return m_Stream; } diff --git a/lib/remote/jsonrpcconnection.hpp b/lib/remote/jsonrpcconnection.hpp index 0fbf6c605..591ddcb1f 100644 --- a/lib/remote/jsonrpcconnection.hpp +++ b/lib/remote/jsonrpcconnection.hpp @@ -42,7 +42,7 @@ class JsonRpcConnection final : public Object public: DECLARE_PTR_TYPEDEFS(JsonRpcConnection); - JsonRpcConnection(const String& identity, bool authenticated, const std::shared_ptr& stream, ConnectionRole role); + JsonRpcConnection(const String& identity, bool authenticated, const Shared::Ptr& stream, ConnectionRole role); void Start(); @@ -50,7 +50,7 @@ public: String GetIdentity() const; bool IsAuthenticated() const; Endpoint::Ptr GetEndpoint() const; - std::shared_ptr GetStream() const; + Shared::Ptr GetStream() const; ConnectionRole GetRole() const; void Disconnect(); @@ -68,7 +68,7 @@ private: String m_Identity; bool m_Authenticated; Endpoint::Ptr m_Endpoint; - std::shared_ptr m_Stream; + Shared::Ptr m_Stream; ConnectionRole m_Role; double m_Timestamp; double m_Seen; @@ -80,7 +80,7 @@ private: bool m_ShuttingDown; boost::asio::deadline_timer m_CheckLivenessTimer, m_HeartbeatTimer; - JsonRpcConnection(const String& identity, bool authenticated, const std::shared_ptr& stream, ConnectionRole role, boost::asio::io_context& io); + JsonRpcConnection(const String& identity, bool authenticated, const Shared::Ptr& stream, ConnectionRole role, boost::asio::io_context& io); void HandleIncomingMessages(boost::asio::yield_context yc); void WriteOutgoingMessages(boost::asio::yield_context yc); diff --git a/lib/remote/pkiutility.cpp b/lib/remote/pkiutility.cpp index a95e3554c..a9200d739 100644 --- a/lib/remote/pkiutility.cpp +++ b/lib/remote/pkiutility.cpp @@ -93,7 +93,7 @@ std::shared_ptr PkiUtility::FetchCert(const String& host, const String& po return std::shared_ptr(); } - auto stream (std::make_shared(IoEngine::Get().GetIoContext(), *sslContext, host)); + auto stream (Shared::Make(IoEngine::Get().GetIoContext(), *sslContext, host)); try { Connect(stream->lowest_layer(), host, port); @@ -161,7 +161,7 @@ int PkiUtility::RequestCertificate(const String& host, const String& port, const return 1; } - auto stream (std::make_shared(IoEngine::Get().GetIoContext(), *sslContext, host)); + auto stream (Shared::Make(IoEngine::Get().GetIoContext(), *sslContext, host)); try { Connect(stream->lowest_layer(), host, port); diff --git a/plugins/check_nscp_api.cpp b/plugins/check_nscp_api.cpp index 1339ccbac..3113478a4 100644 --- a/plugins/check_nscp_api.cpp +++ b/plugins/check_nscp_api.cpp @@ -174,7 +174,7 @@ static int FormatOutput(const Dictionary::Ptr& result) * * @returns AsioTlsStream pointer for future HTTP connections. */ -static std::shared_ptr Connect(const String& host, const String& port) +static Shared::Ptr Connect(const String& host, const String& port) { std::shared_ptr sslContext; @@ -186,7 +186,7 @@ static std::shared_ptr Connect(const String& host, const String& throw; } - std::shared_ptr stream = std::make_shared(IoEngine::Get().GetIoContext(), *sslContext, host); + Shared::Ptr stream = Shared::Make(IoEngine::Get().GetIoContext(), *sslContext, host); try { icinga::Connect(stream->lowest_layer(), host, port); @@ -338,7 +338,7 @@ static Dictionary::Ptr FetchData(const String& host, const String& port, const S namespace beast = boost::beast; namespace http = beast::http; - std::shared_ptr tlsStream; + Shared::Ptr tlsStream; try { tlsStream = Connect(host, port);