add base io interface
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
|
||||
namespace sp {
|
||||
|
||||
@@ -19,6 +20,8 @@ class MessageDispatcher {
|
||||
std::map<MessageIdType, std::vector<std::shared_ptr<MessageHandler>>> m_Handlers;
|
||||
|
||||
public:
|
||||
using MessageBaseType = MessageBase;
|
||||
|
||||
/**
|
||||
* \brief Constructor
|
||||
*/
|
||||
@@ -51,4 +54,4 @@ class MessageDispatcher {
|
||||
|
||||
#include <sp/protocol/message/MessageDispatcherImpl.inl>
|
||||
|
||||
} // namespace blitz
|
||||
} // namespace sp
|
||||
|
||||
@@ -16,7 +16,7 @@ class MessageFactory {
|
||||
|
||||
MessageFactory() : m_Factory(details::ArrayFiller<TBase, TTMessages>::ArrayCreate()) {}
|
||||
|
||||
std::unique_ptr<TBase> CreateMessage(IdType id) {
|
||||
std::unique_ptr<TBase> CreateMessage(IdType id) const {
|
||||
if (id >= m_Factory.size())
|
||||
return nullptr;
|
||||
return m_Factory.at(id)();
|
||||
|
||||
@@ -75,6 +75,13 @@ class MessageInterfaceWriteBase : public TBase {
|
||||
WriteImpl(buffer);
|
||||
}
|
||||
|
||||
// helper
|
||||
DataBuffer Write() const {
|
||||
DataBuffer buffer;
|
||||
this->Write(buffer);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual void WriteImpl(DataBuffer& buffer) const = 0;
|
||||
};
|
||||
@@ -113,6 +120,13 @@ class MessageInterfaceWriteIdBase : public TBase {
|
||||
this->WriteData(this->GetId(), buffer);
|
||||
this->WriteImpl(buffer);
|
||||
}
|
||||
|
||||
// helper
|
||||
DataBuffer Write() const {
|
||||
DataBuffer buffer;
|
||||
this->Write(buffer);
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace details
|
||||
|
||||
Reference in New Issue
Block a user