#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 ) { }