//
// Created by Ht on 2019/8/20.
//

#ifndef JSONPROTOCOL_JEDPBASEMSGPACKER_H
#define JSONPROTOCOL_JEDPBASEMSGPACKER_H

#include "JRDpBaseObj.h"
#include "JRPackage.h"
#include "JRDpCommandDecoder.h"

/**
 * 本对象，需要根据系统的需要进行重载，用于对解码的Json对象进行适当修饰，以适应系统需要。
 */

namespace jedp {

    class JE_API JEDPBaseMsgPacker :
            public JRDpBaseObj {
    public:
        JEDPBaseMsgPacker();
        explicit  JEDPBaseMsgPacker(const QData& data);
        ~JEDPBaseMsgPacker() override;

        /**
         *      校验Package是否合法、是否包含消息转换所有所需的属性
         * @param package
         * @return
         */
        virtual bool checkPackageValid(const JRPackage &package);

        /**
         *      从解包后的Package生成一个JRJsonMessage对象
         * @param package
         * @return
         */
        virtual bool makeMessageFromPackage(const JRPackage &package, qlibc::QData& msg);

        virtual void prepareJsonMessage(qlibc::QData &message);
    };
}


#endif //JSONPROTOCOL_JEDPBASEMSGPACKER_H
