packet_pop.h

来源:互联网 发布:放开那三国2等级数据 编辑:程序博客网 时间:2024/05/29 15:08

/* 

  *文件名 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



0 0
原创粉丝点击