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