#ifndef RVC_MOD_UPLOAD_H_ #define RVC_MOD_UPLOAD_H_ #include "stdafx.h" #include "SpBase.h" #include "SpIni.h" #include "SpTest.h" #include "modVer.h" #include "UploadFSM.h" #include "Upload_server_g.h" using namespace Upload; class CUploadEntity; class UploadSession : public UploadService_ServerSessionBase { public: UploadSession(CUploadEntity* pEntity) : m_pEntity(pEntity) {} virtual ~UploadSession() {} virtual void Handle_UploadProgess(SpReqAnsContext::Pointer ctx); virtual void Handle_UploadNumber(SpReqAnsContext::Pointer ctx); virtual void Handle_UploadDateList(SpReqAnsContext::Pointer ctx); virtual void Handle_ClearUploadDate(SpReqAnsContext::Pointer ctx); private: CUploadEntity* m_pEntity; }; class CUploadEntity : public CEntityBase { public: CUploadEntity() {} virtual ~CUploadEntity() {} virtual const char* GetEntityName() const { return "Upload"; } virtual bool IsService()const { return true; } const char* GetEntityVersion() const override { return MODULE_VERSION_FULL; } ON_ENTITYT_TEST() virtual void OnPreStart(CAutoArray strArgs, CSmartPointer pTransactionContext) { ErrorCodeEnum Error = Error_Succeed; //MessageBoxA(0,0,0,0); Error = m_fsm.Init(this); pTransactionContext->SendAnswer(Error); } virtual void OnSelfTest(EntityTestEnum eTestType, CSmartPointer pTransactionContext) { if (Test_ShakeHand == eTestType) { pTransactionContext->SendAnswer(Error_Succeed); } } virtual void OnPreClose(EntityCloseCauseEnum eCloseCause, CSmartPointer pTransactionContext) { pTransactionContext->SendAnswer(Error_Succeed); } // 实体服务化 virtual CServerSessionBase* OnNewSession(const char*, const char*) { return new UploadSession(this); } //查询当前上传进度 ErrorCodeEnum UploadProgess(SpReqAnsContext::Pointer ctx) { ErrorCodeEnum ret = Error_Succeed; UploadProgress progress; m_fsm.getUploadProgress(progress); ctx->Ans.uploadState = progress.uploadState; ctx->Ans.uploadNumber = progress.uploadNumber; ctx->Ans.elapseTime = CSimpleStringA2W(progress.elapseTime); Dbg("UploadProgess: state %d uploadNumber %d elapseTime %s", progress.uploadState, progress.uploadNumber, progress.elapseTime.GetData()); return ret; } //查询剩余待上传的文件个数 ErrorCodeEnum UploadNumber(SpReqAnsContext::Pointer ctx) { ErrorCodeEnum ret = Error_Succeed; Dbg("UploadNumber req silentTime is %d", ctx->Req.silentTime); int fileNum = m_fsm.getCheckDirFile(ctx->Req.silentTime); Dbg("UploadNumber is %d", fileNum); ctx->Ans.uploadNumber = fileNum; return ret; } //查询上传日期列表 ErrorCodeEnum UploadDateList(SpReqAnsContext::Pointer ctx) { ErrorCodeEnum ret = Error_Succeed; CAutoArray str; ret = m_fsm.getUploadDate(str); if (ret == Error_Succeed) { ctx->Ans.uploadDateStr = str; } return ret; } //清空上传日期列表 ErrorCodeEnum ClearUploadDate(SpReqAnsContext::Pointer ctx) { ErrorCodeEnum ret = Error_Succeed; bool bret = m_fsm.clearUploadDate(); if (bret) { ctx->Ans.isOK = true; } else { ctx->Ans.isOK = false; } return ret; } private: UploadFSM m_fsm; }; #endif