00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "vmsSimpleFileDownloader.h"
00009
00010 #ifdef _DEBUG
00011 #undef THIS_FILE
00012 static char THIS_FILE[]=__FILE__;
00013 #define new DEBUG_NEW
00014 #endif
00015
00016 vmsSimpleFileDownloader::vmsSimpleFileDownloader()
00017 {
00018 m_dldr = NULL;
00019 }
00020
00021 vmsSimpleFileDownloader::~vmsSimpleFileDownloader()
00022 {
00023 SAFE_DELETE (m_dldr);
00024 }
00025
00026 fsInternetResult vmsSimpleFileDownloader::Download(LPCSTR pszUrl, LPCSTR pszFileName)
00027 {
00028 if (IsRunning ())
00029 return IR_S_FALSE;
00030
00031 CreateDownloader ();
00032
00033 fsInternetResult ir = m_dldr->CreateByUrl (pszUrl);
00034 if (ir != IR_SUCCESS)
00035 return ir;
00036
00037 fsDownload_Properties *dp = m_dldr->GetDP ();
00038
00039 SAFE_DELETE_ARRAY (dp->pszFileName);
00040 fsnew (dp->pszFileName, char, lstrlen (pszFileName) + 1);
00041 strcpy (dp->pszFileName, pszFileName);
00042 dp->uMaxSections = 1;
00043 dp->uMaxAttempts = 1;
00044 dp->dwFlags |= DPF_DONTRESTARTIFNORESUME;
00045 dp->enSCR = SCR_STOP;
00046 dp->enAER = AER_REWRITE;
00047 *dp->pszAdditionalExt = 0;
00048
00049 ir = m_dldr->StartDownloading ();
00050 if (ir != IR_SUCCESS)
00051 return ir;
00052
00053 return IR_SUCCESS;
00054 }
00055
00056 void vmsSimpleFileDownloader::_DownloadMgrDescEvents(fsDownloadMgr *, fsDownloadMgr_EventDescType, LPCSTR pszDesc, LPVOID lp)
00057 {
00058
00059 }
00060
00061 DWORD vmsSimpleFileDownloader::_DownloadMgrEvents(fsDownloadMgr *pMgr, fsDownloaderEvent ev, UINT uInfo, LPVOID lp)
00062 {
00063 vmsSimpleFileDownloader *pthis = (vmsSimpleFileDownloader*) lp;
00064
00065 switch (ev)
00066 {
00067 case DE_EXTERROR:
00068 if (uInfo == DMEE_STOPPEDORDONE)
00069 {
00070 if (pthis->m_dldr->IsDone () == FALSE)
00071 pthis->m_dldr->DeleteFile ();
00072 }
00073 break;
00074 }
00075
00076 return TRUE;
00077 }
00078
00079 void vmsSimpleFileDownloader::CreateDownloader()
00080 {
00081 SAFE_DELETE (m_dldr);
00082 fsnew1 (m_dldr, fsDownloadMgr (NULL));
00083 m_dldr->SetEventFunc (_DownloadMgrEvents, this);
00084 m_dldr->SetEventDescFunc (_DownloadMgrDescEvents, this);
00085 }
00086
00087 bool vmsSimpleFileDownloader::IsRunning()
00088 {
00089 return m_dldr ? m_dldr->HasActivity () != 0 : FALSE;
00090 }
00091
00092 fsInternetResult vmsSimpleFileDownloader::GetLastError()
00093 {
00094 return m_dldr->GetLastError ();
00095 }
00096
00097 void vmsSimpleFileDownloader::Stop()
00098 {
00099 if (m_dldr)
00100 m_dldr->StopDownloading ();
00101 }