Files
Simple-Protocol-Lib/include/sp/protocol/MessageFactory.h
2025-02-26 10:17:22 +01:00

32 lines
585 B
C++

#pragma once
#include <array>
#include <functional>
#include <iostream>
#include <memory>
#include <sp/protocol/message/ArrayFillerImpl.h>
namespace sp {
template <typename TBase, typename TTMessages>
class MessageFactory {
public:
using IdType = typename TBase::MsgIdType;
MessageFactory() : m_Factory(details::ArrayFiller<TBase, TTMessages>::ArrayCreate()) {}
std::unique_ptr<TBase> CreateMessage(IdType id) const {
if (id >= m_Factory.size())
return nullptr;
return m_Factory.at(id)();
}
private:
details::ArrayType<TBase> m_Factory;
};
} // namespace sp