/*
 * @Description: 
 * @Version: 1.0
 * @Autor: lishengyin
 * @Date: 2022-04-02 14:19:03
 * @LastEditors: lishengyin
 * @LastEditTime: 2022-04-15 11:21:32
 */
#ifndef __PROCESSINGLT_HPP_
#define __PROCESSINGLT_HPP_

#include <iostream>
#include "ParserBase.hpp"
#include "Util/logger.h"
#include "Util/NoticeCenter.h"

using namespace toolkit;
using namespace std;

namespace ins
{
    class ProcessingIt:public Module
    {
    private:
        ProcessingIt(): Module("ProcessingIt"){
            Init();
        }
    public:
        using Ptr = std::shared_ptr<ProcessingIt>;

        ~ProcessingIt(){this->Destroy();}

        /**
         * @description: 获取Ptr
         * @param {*}
         * @return {*}
         */        
        static std::shared_ptr<ProcessingIt> getPtr();
        
        /**
         * @description: 初始化
         * @param {*}
         * @return {*}
         */        
        int8_t Init() override;

        /**
         * @description: 释放资源
         * @param {*}
         * @return {*}
         */        
        void Destroy() override;

        /**
         * @description: 是否正常
         * @param {*}
         * @return {*}
         */        
        bool isNormally() override{
            return true;
        }

        /**
         * @description: 解析数据
         * @param {*}
         * @return {*}
         */        
        bool ParserData(std::shared_ptr<InsPacket> packet);

        /**
         * @description: 获取解析器
         * @param {*}
         * @return {*}
         */        
        std::shared_ptr<ParserBase> getParser(InsUniversalData::Ptr data);
    };
} // namespace name


#endif