TransferSrv_2017/FileTransfer/DescargadorFiles.cpp

106 lines
2.0 KiB
C++

#include "StdAfx.h"
#include "DescargadorFiles.h"
#include "_log.h"
#include "dir_manager.h"
DescargadorFiles::DescargadorFiles(void)
{
errorMsg[0]=dirDest[0]=srv[0]=key[0]=usu[0]=0;
porcen =0;
puerto =0;
cancela =false;
}
DescargadorFiles::~DescargadorFiles(void)
{
cancela = true;
}
void DescargadorFiles::run()
{
FileTransferClient ft;
char orig[256], dst[256];
Sleep(100);
ft.setLisener(this);
if(!ft.conecta(srv,puerto))
{
if(lisener)
lisener->finTransfer(false);
C_log::log("PideFile", "Error al conectar a: %s:%ld",srv, puerto);
return;
}
if(!ft.Presenta(usu, key))
{
if(lisener)
lisener->finTransfer(false);
C_log::log("PideFile", "Error al presentarse a: %s" ,usu);
return;
}
double porcenFile = 100./files->n_i;
for (int i =0; i< files->n_i && !cancela; i++)
{
porcen = i/porcenFile;
sprintf(dst, "%s%s",dirDest,Cdir_manager::nombre_archivo(files->get(i),orig));
if(!ft.DescargaFile(files->get(i), dst))
{
if(lisener)
lisener->finTransfer(false);
C_log::log("PideFile", "Error al descargar orig: %s dest%ld",files->get(i), dst);
return;
}
}
if(!ft.desconecta())
{
C_log::log("PideFile", "Error al desconectar a: %s:%ld",srv, puerto);
}
else
{
if(lisener)
lisener->finTransfer(true);
C_log::log("PideFile", "final Feliz");
return;
}
}
void DescargadorFiles::setServer( char* ip, int puerto, char *key, char* usu )
{
strcpy(srv, ip);
strcpy(this->key, key);
strcpy(this->usu, usu);
this->puerto = puerto;
}
bool DescargadorFiles::iniciaDescarga( StrArray *filesOrig,char *dirDest, FileTransferClientLisener *lisener )
{
strcpy(this->dirDest, dirDest);
this->lisener = lisener;
files = filesOrig;
porcen =0;
cancela = false;
return lanza() == TRUE;
}
void DescargadorFiles::cancelaDesc()
{
cancela= true;
join();
}
void DescargadorFiles::setStatus( double porcent )
{
if(lisener)
lisener->setStatus(porcent+this->porcen);
}
void DescargadorFiles::finTransfer( bool finalFeliz )
{
}