diff --git a/include/transport/networkpluginserver.h b/include/transport/networkpluginserver.h index 0c05bcb94ae7cd82978e7b6a8bb13aa38270be25..b7ca5f291b655b9dda7ea0c35ec96bf07e85c7c8 100644 --- a/include/transport/networkpluginserver.h +++ b/include/transport/networkpluginserver.h @@ -41,6 +41,35 @@ class VCardResponder; class RosterResponder; class BlockResponder; +class DummyReadBytestream : public Swift::ReadBytestream { + public: + DummyReadBytestream() {m_finished = false;} + virtual ~DummyReadBytestream() {} + void appendData(const std::string &data) { + m_data += data; + onDataAvailable(); + } + + virtual std::vector read(size_t size) { + if (m_data.empty()) { + return std::vector(); + } + + if (m_data.size() < size) { + m_finished = true; + return std::vector(m_data.begin(), m_data.end()); + } + std::string ret = m_data.substr(0, size); + m_data.erase(m_data.begin(), m_data.begin() + size); + return std::vector(ret.begin(), ret.end()); + } + virtual bool isFinished() const { return m_finished; } + + private: + bool m_finished; + std::string m_data; +}; + class NetworkPluginServer { public: struct Backend { @@ -129,6 +158,7 @@ class NetworkPluginServer { Component *m_component; std::list m_waitingUsers; bool m_isNextLongRun; + std::map > m_bytestreams; }; }