⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warfiledriverfiledynamic.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "StdAfx.h"#include "WarFileDriverFileDynamic.h"   // class implemented#ifndef WAR_FILE_DRIVER_DYNAMIC_H#	include "WarFileDriverDynamic.h"#endif/////////////////////////////// PUBLIC /////////////////////////////////////////============================= LIFECYCLE ====================================WarFileDriverFileDynamic::WarFileDriverFileDynamic(WarFileDriverDynamic *pDriver): WarFileDriverFile(pDriver),mIsOpen(false),mPosition(0){}// WarFileDriverFileDynamicWarFileDriverFileDynamic::~WarFileDriverFileDynamic(){}// ~WarFileDriverFileDynamic//============================= OPERATORS ====================================//============================= OPERATIONS ===================================void WarFileDriverFileDynamic::Open(const WarUrl& openUrl, 									war_uint32_t openFlags) 									throw(WarException){    if ((openFlags & F_CALLBACK) && !CanDoCallback())        openFlags &= ~F_CALLBACK;	mFlags = openFlags;	mIsOpen = true;}void WarFileDriverFileDynamic::Close() throw(WarException){	mIsOpen = false;	mpContent->Reset();	mpContent = NULL;}war_uint32_t WarFileDriverFileDynamic::Read(war_cptr_t Buf, 											war_uint32_t bytes) 											throw(WarException){	war_uint32_t actual_bytes = bytes;	war_flen_t bytes_left = GetLength() - GetPosition();	if (actual_bytes > bytes_left)		actual_bytes = bytes_left;	memcpy(Buf, mpContent->GetValue().c_str() + GetPosition(), 		actual_bytes);	mPosition += actual_bytes;	return actual_bytes;}void WarFileDriverFileDynamic::Flush() throw(WarException){}war_flen_t WarFileDriverFileDynamic::Seek(war_flen_t fileOffset, 										  SeekModes seekMode) 										  throw(WarException){	war_flen_t new_pos = 0;	switch(seekMode)	{	case WAR_SEEK_BEGIN:		new_pos = fileOffset;		break;	case WAR_SEEK_CURRENT:		new_pos = GetPosition() + fileOffset;		break;	case WAR_SEEK_END:		new_pos = GetLength() + fileOffset;		break;	}	if ((0 > new_pos) && (GetLength() >= new_pos))		WarThrow(WarError(WAR_FERR_SEEK_FAILED), NULL);	mPosition = new_pos;	return GetPosition();}war_flen_t WarFileDriverFileDynamic::GetLength() throw(WarException){	return mpContent->GetValue().size();}war_flen_t WarFileDriverFileDynamic::GetPosition() throw(WarException){	return mPosition;}bool WarFileDriverFileDynamic::IsEof() throw(WarException){	return GetLength() == GetPosition();}bool WarFileDriverFileDynamic::IsOpen() throw(WarException){	return mIsOpen;}//============================= CALLBACK   ===================================//============================= ACCESS     ===================================//============================= INQUIRY    ===================================/////////////////////////////// PROTECTED  ////////////////////////////////////////////////////////////////// PRIVATE    ///////////////////////////////////

⌨️ 快捷键说明

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