#pragma once #include "ros_bridge/include/MessageBaseClass.h" #include #include "rapidjson/include/rapidjson/document.h" namespace ROSBridge { class CasePacker { typedef rapidjson::Document JsonDoc; typedef std::unique_ptr UniqueJsonPtr; public: CasePacker(); struct MessageTag { char *topic; char *messagType; }; typedef MessageTag Tag; template void packAndSend(const T &msg, const char *topic); const Tag &showTag(); template void unpack(T &msg); protected: void _addTag(JsonDoc &doc, const char *topic, const char *messageType); void _removeTag(JsonDoc &doc); static const char* topicKey; static const char* messageTypeKey; private: Tag _tag; }; }