streambase.cpp

来自「网络socket,IO,线程池」· C++ 代码 · 共 116 行

CPP
116
字号
#include "StreamBase.h"
using namespace Stream;



CNetStream & CNetStream::operator << (unsigned char val)
{
	if (m_socket.Write(&val,sizeof(val)) != static_cast<int>(sizeof(val)))
		throw CExceptionBase(EIO,"Error to write a byte");
	return *this;	
}

CNetStream & CNetStream::operator << (unsigned short val)
{
	unsigned char buf[2];
	buf[0] = (val >> 8) & 0xff;
	buf[1] = (val & 0xff);
	
	if (m_socket.Write(buf,sizeof(buf)) != static_cast<int>(sizeof(val)))
		throw CExceptionBase(EIO,"Error to write a byte");
	return *this;	
} 

CNetStream & CNetStream::operator << (unsigned long val)
{
	unsigned char buf[4];
	buf[0] = (unsigned char)((val >> 24) & 0xff);
	buf[1] = (unsigned char)((val >> 16) & 0xff);
	buf[2] = (unsigned char)((val >> 8) & 0xff);
	buf[3] = (unsigned char)(val & 0xff);
	
	if (m_socket.Write(buf,sizeof(buf)) != static_cast<int>(sizeof(val)))
		throw CExceptionBase(EIO,"Error to write a byte");
	return *this;	
}

CNetStream & CNetStream::operator << (unsigned int val)
{
	unsigned char buf[4];
	buf[0] = (val >> 24) & 0xff;
	buf[1] = (val >> 16) & 0xff;
	buf[2] = (val >> 8) & 0xff;
	buf[3] = (val & 0xff);
	
	if (m_socket.Write(buf,sizeof(buf)) != static_cast<int>(sizeof(val)))
		throw CExceptionBase(EIO,"Error to write a byte");
	return *this;	
}

// CUInt128 store the high byte first
CNetStream & CNetStream::operator << (const CUInt128& val)
{
	byte* buf = val.GetDataPtr();
	if(m_socket.Write(buf,16) != 16)
		throw CExceptionBase(EIO,"Error to write a byte");
	return *this;
}

CNetStream & CNetStream::operator << (const char * lpszInfo)
{
	int nLength = strlen(lpszInfo);
	if (m_socket.Write(lpszInfo,nLength) != nLength)
		throw CExceptionBase(EIO,"Error to write a byte");
	return *this;
}

CNetStream & CNetStream::operator >> (unsigned char & val)
{
	if (m_socket.Read(&val,sizeof(val)) != static_cast<int>(sizeof(val)))
		throw CExceptionBase(EIO,"Error to write a byte");
	return *this;
}

CNetStream & CNetStream::operator >> (unsigned short & val)
{
	unsigned char buf[2];
	if (m_socket.Read(buf,sizeof(buf)) != static_cast<int>(sizeof(val)))
		throw CExceptionBase(EIO,"Error to write a byte");
	val = static_cast<unsigned char>(buf[0]) <<8 | buf[1];	
	return *this;
} 

CNetStream & CNetStream::operator >> (unsigned long & val)
{
	unsigned char buf[4];
	if (m_socket.Read(buf,sizeof(buf)) != static_cast<int>(sizeof(val)))
		throw CExceptionBase(EIO,"Error to write a byte");
	val = (static_cast<unsigned char>(buf[0]) << 24)   |
			(static_cast<unsigned char>(buf[1]) << 16) |
			(static_cast<unsigned char>(buf[2]) <<  8) |
			static_cast<unsigned char>(buf[3]);
	return *this;
}

CNetStream & CNetStream::operator >> (unsigned int & val)
{
	unsigned char buf[4];
	if (m_socket.Read(buf,sizeof(buf)) != static_cast<int>(sizeof(val)))
		throw CExceptionBase(EIO,"Error to write a byte");
	val = (static_cast<unsigned char>(buf[0]) << 24)   |
			(static_cast<unsigned char>(buf[1]) << 16) |
			(static_cast<unsigned char>(buf[2]) <<  8) |
			static_cast<unsigned char>(buf[3]);
	return *this;
}


CNetStream & CNetStream::operator >> (CUInt128& val)
{
	unsigned char buf[16];
	if (m_socket.Read(buf,sizeof(buf)) != static_cast<int>(sizeof(buf)))
		throw CExceptionBase(EIO,"Error to write a byte");
	val.SetValue(buf);	
	return *this;	
}

⌨️ 快捷键说明

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