#pragma once

#include "CookConfig.h"
#include <string>
#include <vector>

U_NS_BEGIN_CATERING

class CCookVariant;
class CCookFunItemInl;

class CCookFunItem
{
public:
    CCookFunItem(CCookFunItemInl* pInl);
    ~CCookFunItem();
    // 真实产品id，比如3.5kw电磁炉1的唯一标识【10051】
    long getTrueProductId()const;
    // 函数名称，比如【SetPwrValue】
    const std::string& getFunName()const;
    // 函数实参，比如【{"PwrSetValue":"150"}】
    const std::vector<CCookVariant*>& getFunParams()const;
    // 获取命令id号
    std::string GetCmdId()const;
    // 设置错误码
    void SetErrCode(int iErrCode, const std::string& errMsg, const std::string& errParam);
    // 清除错误码（内部使用）
    void ClearErrCode();
    // 是否需要重试（内部使用）
    bool NeedRetry();
    // 获取错误码（内部使用）
    void GetErrCode(int& iErrCode, std::string& errMsg);
    // 获取类的中文名（内部使用）
    const std::string& GetClassCNName()const;
private:
    U_DISABLE_COPY(CCookFunItem)

private:
    CCookFunItemInl* m_pImpl;
};

U_NS_END_CATERING
