#pragma once

#include <string>
#include <vector>

#include "DllDefines.h"

#define MC_MESSAGE_SIZE_MAX 512

typedef struct _MC_MSG_GRP
{
    int msgType;
    int msgSize;
    char byteMsg[MC_MESSAGE_SIZE_MAX];
} MC_MSG_GRP;

typedef struct _MSG_DATA
{
    int msgType;
    std::string strByteMsg;

} MC_DATA;

class MCCTRDLLCLASS CMsgDecode
{
public:
    CMsgDecode(void);
    ~CMsgDecode(void);

    bool getMsg(MC_DATA& msg);

    void appendPacket(const char* chStream, int size);
    void appendPacket(const std::string& strStream);
    void appendByte(char chByte);
    void resetBuf();

    std::string createMsg(int nType, const std::string& strMsg);
    int ReadInt32(const std::string& strBuf);
    std::string WriteInt32(int nData);

private:
    void discardPacket(size_t Len);

    std::string m_strBuf;
};
