#include "strategy_adapters.h"\r
\r
#include <boost/locale.hpp>\r
+#include <boost/algorithm/string/replace.hpp>\r
\r
namespace caspar { namespace IO {\r
\r
{\r
}\r
\r
- virtual void parse(const std::basic_string<char>& data)\r
+ void parse(const std::basic_string<char>& data) override\r
{\r
auto utf_data = boost::locale::conv::to_utf<wchar_t>(data, codepage_);\r
\r
: client_(client)\r
, codepage_(codepage)\r
{\r
- CASPAR_LOG(info) << "from_unicode_client_connection created.";\r
}\r
~from_unicode_client_connection()\r
{\r
- CASPAR_LOG(info) << "from_unicode_client_connection destroyed.";\r
}\r
\r
- virtual void send(std::basic_string<wchar_t>&& data)\r
+ void send(std::basic_string<wchar_t>&& data) override\r
{\r
- auto str = boost::locale::conv::from_utf<wchar_t>(std::move(data), codepage_);\r
+ auto str = boost::locale::conv::from_utf<wchar_t>(data, codepage_);\r
\r
client_->send(std::move(str));\r
+\r
+ if (data.length() < 512)\r
+ {\r
+ boost::replace_all(data, L"\n", L"\\n");\r
+ boost::replace_all(data, L"\r", L"\\r");\r
+ CASPAR_LOG_COMMUNICATION(info) << L"Sent message to " << client_->address() << L":" << data;\r
+ }\r
+ else\r
+ CASPAR_LOG_COMMUNICATION(info) << L"Sent more than 512 bytes to " << client_->address();\r
}\r
\r
- virtual void disconnect()\r
+ void disconnect() override\r
{\r
client_->disconnect();\r
}\r
\r
- virtual std::wstring print() const\r
+ std::wstring address() const override\r
{\r
- return client_->print();\r
+ return client_->address();\r
}\r
\r
-\r
- void add_lifecycle_bound_object(const std::wstring& key, const std::shared_ptr<void>& lifecycle_bound)\r
+ void add_lifecycle_bound_object(const std::wstring& key, const std::shared_ptr<void>& lifecycle_bound) override\r
{\r
client_->add_lifecycle_bound_object(key, lifecycle_bound);\r
}\r
- std::shared_ptr<void> remove_lifecycle_bound_object(const std::wstring& key)\r
+ std::shared_ptr<void> remove_lifecycle_bound_object(const std::wstring& key) override\r
{\r
return client_->remove_lifecycle_bound_object(key);\r
}\r
return spl::make_shared<to_unicode_adapter>(codepage_, unicode_strategy_factory_->create(client));\r
}\r
\r
-/*class legacy_client_info : public ClientInfo\r
-{\r
- client_connection<wchar_t>::ptr client_connection_;\r
-public:\r
- legacy_client_info(const client_connection<wchar_t>::ptr& client_connection)\r
- : client_connection_(client_connection)\r
- {\r
- CASPAR_LOG(info) << "legacy_client_info created.";\r
- }\r
-\r
- ~legacy_client_info()\r
- {\r
- CASPAR_LOG(info) << "legacy_client_info destroyed.";\r
- }\r
-\r
-\r
- virtual void Disconnect()\r
- {\r
- client_connection_->disconnect();\r
- }\r
-\r
- virtual void Send(const std::wstring& data)\r
- {\r
- client_connection_->send(std::wstring(data));\r
- }\r
-\r
- virtual std::wstring print() const \r
- {\r
- return client_connection_->print();\r
- }\r
- virtual void add_lifecycle_bound_object(const std::wstring& key, const std::shared_ptr<void>& lifecycle_bound)\r
- {\r
- client_connection_->add_lifecycle_bound_object(key, lifecycle_bound);\r
- }\r
- virtual std::shared_ptr<void> remove_lifecycle_bound_object(const std::wstring& key)\r
- {\r
- return client_connection_->remove_lifecycle_bound_object(key);\r
- }\r
-\r
-};*/\r
-\r
class legacy_strategy_adapter : public protocol_strategy<wchar_t>\r
{\r
ProtocolStrategyPtr strategy_;\r
: strategy_(strategy)\r
, client_info_(client_connection)\r
{\r
- CASPAR_LOG(info) << "legacy_strategy_adapter created.";\r
}\r
~legacy_strategy_adapter()\r
{\r
- CASPAR_LOG(info) << "legacy_strategy_adapter destroyed.";\r
}\r
\r
- virtual void parse(const std::basic_string<wchar_t>& data)\r
+ void parse(const std::basic_string<wchar_t>& data) override\r
{\r
strategy_->Parse(data, client_info_);\r
}\r