www.pudn.com > UDP文件传输.rar > ZsP2pEventHandle.h


#ifndef ZS_P2P_EVENTHANDLE_H 
#define ZS_P2P_EVENTHANDLE_H 1 
////////////////////////////////////////////////////////////////////////////// 
 
 
//文件名		: ZsP2pEventHandle.h 
 
//功能			: 中搜UDP文件传输网络事件接口 
 
//创建			: 2004.11.14 
 
//修改日期		: 2004.11.14 
 
//作者			: 韩国静 
// 
 
#include "public/unitype.h" 
#include "../public/zs_p2p_const.h" 
typedef struct{ 
	UNI_DWORD	dwFileSize; 
	UNI_DWORD	dwFileID;//发送者自己定义(用以区别不同目录下的同名文件或同一个文件同时传给不同的人) 
	char		sendName[MAX_NAME];//对接收者来说是发送者的用户名,对发送者来说是接收者用户名 
	char		fileName[MAX_FILE_NAME]; 
	void *		pExtra;//为用户保存一块数据,其意义由上层解释。 
}UI_FILEINFO,*PUI_FILEINFO; 
 
class ZsP2pEventHandle 
{ 
	/* 
	以下是上层需提供的接口用于通知用户,显示进度和保存数据等! 
	在多个文件同时传输时,这些接口均应尽快返回以使用底层可处理对其它文件的传输。 
	当只传输一个文件时,这些接口占用的时间也有可能导制超时,进而使传输失败! 
	上层请不要直接修改UI_FILEINFO结构中的内容!! 
	*/ 
public: 
	virtual void UI_UnInitialize(const PUI_FILEINFO pfile,UNI_OUT void * &pExtra)=0; 
 
	virtual UNI_BOOL UI_Initialize(const PUI_FILEINFO pfile,UNI_OUT void * &pExtra,char *pathName)=0; 
 
	//发送文件的申请被服务拒绝 
	virtual void UI_OnFileRefuse(const PUI_FILEINFO pfile)=0; 
	/* 
	收到来服务的文件来源通知,若此函数返回UNI_FALSE表示传输将在以后通过调用UserStartRecv开始,此时可以告知用户用文件到来! 
	若此函数返回UNI_TRUE则表示传输立刻开始,dwOffset代表传输从文件的哪个位置开始,如为0则重头传输。 
	pExtra为用户保存一块数据,其意义由上层解释。此值和UI_UnInitialize的pExtra参数为同一个值 
 
	注:如文件到来时上层发现此文件已存在且上次没完成就失败了,可以给dwOffset一个不为0的值,从上次失败的地方开始传输。 
	*/ 
	virtual UNI_BOOL UI_OnFileReq(const PUI_FILEINFO pfile,UNI_OUT UNI_DWORD &dwOffset,UNI_OUT void * &pExtra)=0; 
	//发送方取消文件传输 
	virtual void UI_OnCancelBySend(const PUI_FILEINFO pfile)=0; 
	//接收方取消文件传输 
	virtual void UI_OnCancelByRecv(const PUI_FILEINFO pfile)=0; 
	//发送任务结束,是否成功则要看过程中是否被取消或发生过错误 
	virtual void UI_OnSendOver(const PUI_FILEINFO pfile)=0; 
	//接收完成,是否成功则要看过程中是否被取消或发生过错误 
	virtual void UI_OnRecvOver(const PUI_FILEINFO pfile)=0; 
	//接收超时,传输将要失败 
	virtual void UI_OnRecvTimeOut(const PUI_FILEINFO pfile)=0; 
	// 
	virtual void UI_OnBadError(const PUI_FILEINFO pfile)=0; 
	//发送超时,传输将要失败 
	virtual void UI_OnSendTimeOut(const PUI_FILEINFO pfile)=0; 
	//有数据传来需要存储 
	virtual UNI_BOOL UI_OnSaveData(const PUI_FILEINFO pfile,UNI_DWORD offset,UNI_DWORD size,void *data)=0; 
	//接收方索要数据 
	virtual int UI_OnReadData(const  PUI_FILEINFO pfile,UNI_DWORD offset,UNI_DWORD size,void *data)=0; 
	// 
}; 
///////////////////////////////////////////// 
#endif