1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
6 #include "base/i2-base.hpp"
7 #include "base/stream.hpp"
8 #include "base/tlsstream.hpp"
10 #include <boost/asio/spawn.hpp>
18 * Helper functions for reading/writing messages in the netstring format.
20 * @see https://cr.yp.to/proto/netstrings.txt
27 static StreamReadStatus ReadStringFromStream(const Stream::Ptr& stream, String *message, StreamReadContext& context,
28 bool may_wait = false, ssize_t maxMessageLength = -1);
29 static String ReadStringFromStream(const std::shared_ptr<AsioTlsStream>& stream, ssize_t maxMessageLength = -1);
30 static String ReadStringFromStream(const std::shared_ptr<AsioTlsStream>& stream,
31 boost::asio::yield_context yc, ssize_t maxMessageLength = -1);
32 static size_t WriteStringToStream(const Stream::Ptr& stream, const String& message);
33 static size_t WriteStringToStream(const std::shared_ptr<AsioTlsStream>& stream, const String& message);
34 static size_t WriteStringToStream(const std::shared_ptr<AsioTlsStream>& stream, const String& message, boost::asio::yield_context yc);
35 static void WriteStringToStream(std::ostream& stream, const String& message);
43 #endif /* NETSTRING_H */