shppresponsestream.h

来自「本源码为移动公司话费查询中间件TUXEDO使用的实例」· C头文件 代码 · 共 91 行

H
91
字号
/*******************************************
* file name:   SHPPResponseStream.h
* date:        2002.7.25
* 用途:       定义自助话打印协议SHPP写应答包格式
* 作者:       林游海
*******************************************/

#if !defined(_SHPPRESPONSESTREAM_H_LINYOUHAI)
#define _SHPPRESPONSESTREAM_H_LINYOUHAI

#include "SHPPProtocol.h"
#include "SHPPSocket.h"

#define FIELDCOUNT  10

#define LPLLEFT    0    //左对齐
#define LPLCENTER  1    //居中
#define LPLRIGHT   2    //右对齐

struct PrintFieldStruct
{
//	int nMaxSize;   //字段的最大值
	int nPos; //打印的第一个字节的位置
	char nStyle;    //对齐方式0为左对齐1为居中2为右对齐
};

class CSHPPResponseStream :public CSHPPProtocol
{
public:
	CSHPPResponseStream(CSHPPSocket* pSocket);

	~CSHPPResponseStream();
	//写包头协议
	//写版本号---------2-----
	//写包体的长度-----8-----
	//写服务类型-------4-----
	void PutServerType(UInt16 nServerType);
	//写保留字---------8-----
	//写包序-----------4-----
	//写M标志位--------1-----
	//写result结果状态-4-----
	void PutResult(UInt16 nResult);

	//增加一个参数
	KN_Error PutParameter(char* pPara,int nLen,Bool16 bRow = true);
	KN_Error PutParameter(char* pPara,Bool16 bRow = true);
	void     PutSeparator();

	KN_Error Flush();

	UInt32 GetPacketLen(){return m_unBytesWritten;}
	//重新写inNumBytesToLeave偏移量后的字节
	void	Reset(UInt32 inNumBytesToLeave = 0);

	void    WriteSHPPHead(UInt16 nM = 1);

	/////////////处理打印字段////////
	int  AddPrintField(int nMaxSize,char nStyle = 0);
	void ResetField();
	void AddFieldVal(char* pchVal,int nSize);
	void PrintLine(char* pLine,char nStyle);
	int  GetRowSize(){return m_nRowSize;}
	/////////////////////////////////

protected:
	void     SetField(char* pHead,UInt32 nInParam,UInt16 nSize);

	char*     m_pchStartPut;       // 内存块
	char*	  m_pchCurrentPut;     // 指向内存块的当前位置

	UInt32    m_unBytesWritten;    // 内存块已写了长度

	//打印字段
	struct PrintFieldStruct* m_pPrintField;
	int  m_nFieldCount;            //打印字段的总个数
	int  m_nFieldVal;              //当前已赋值的字段个数
	int  m_nRowSize;               //每个行的大小;
	char m_chPrintString[2*PRINTMAXLEN +1 ];

	enum
	{
		sfTimeout                 = 15000,  //传输超时
	};

	CSHPPSocket* m_pSocket;

	Bool16 m_bWriteHead;
	UInt16 m_nSeq;
};

#endif //_SHPPRESPONSESTREAM_H_LINYOUHAI

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?