/*
*文件名 packet_pop.h
*描述:从数据包的数据体取出数据
*/
#ifndef _PACKET_POP_H
#define _PACKET_POP_H
class CPacketPop
{
public:
//@len src_data指向的数据的长度
CPacketPop(char *src_data,int len);
CPacketPop();
~CPacketPop();
public:
//初始化对象
Init(char *src_data,int len);
//从数据缓存中取一个char类型数据
//返回值:成功时返回读取数据的字节总数
//否则返回以下错误代码://1 如果数据缓存为空 返回ERR_NO_DATA
//如果数据缓存中的未读数据的长度小于要读取的数据长度时,返回ERR_BUFF_LESS_DATA
int PopChar(char &c);
//从数据缓存中取一个unsigned char类型数据
int PopUChar(unsigned char &uc);
//从数据缓存中取一个short类型数据
int PopShort(short &s);
//从数据缓存中取一个unsigned short类型数据
int PopUShort(unsigned short &us);
//从数据缓存中取一个int类型数据
int PopInt(short &i);
//从数据缓存中取一个unsigned int类型数据
int PopUInt(unsigned int&ui);
//从数据缓存中取一个64位整数
int PopInt64(long long &i);
}
//从数据缓存中取一个float类型数据
int PopFloat(float &f);
//从数据缓存中取一个double类型数据
int PopDouble(double &d);
/*
*函数功能:从数据缓存中取出一个字符串,并且在字符串尾部添加结束符‘\0’
*输入参数:@buff 用于存放取出字符串的缓存
@buff_size @buff指向缓存的字节大小
*返回值:字符串长度
*/
int PopVS(char *buff,int buff_size);
/*
*函数功能:从数据缓存中取出数据,并且检查输入缓存大小
*字符串遵循协议【字符串长度,字符串】
*输入参数:
@buff_size @buff指向缓存的字节大小
*返回取出数据的长度
*/
int PopBuff(char *buff,int buff_size);
//提取一块字符串,如果字符串大于0返回字符串指针,len为字符串的长度;否则返回NULL。
char *PopBuff(int &str_len);
//获取offset
int GetOffset();
//获取数据长度
int GetLength();
private:
char *m_data;
int m_len;
int m_offset;
}
#endif