#include "stdafx.h"
#ifdef OLIVIA_COMPILA
//olivia
#include "olv_thr.h"
#include "olv.h"
#include "lock.h"

Colv_thr::Colv_thr(COlivia *olv)
{
	this->olv=olv;
	progreso=tarea=0;
	msg_proce[0]=0;
}

Colv_thr::~Colv_thr(void)
{
}
//*************************************************************************************
/**
 * Actualiza el progreso y la tarea por la que va
 */
void Colv_thr::pon_mi_progre(int tar, int prog)
{
	tarea=tar;
	progreso=prog;	

	pon_olv_progre();
}
//*************************************************************************************
/**
 * Actualiza el mensaje de tarea
 */
void Colv_thr::pon_mi_msg(char *fmt, ...)
{
	//formatea el string que llega
	int k;
	va_list arg_ptr;

	if(strlen(fmt)==0)
	{
		msg_proce[0]=0;
		return;
	}
	va_start(arg_ptr, fmt);
	k = _vsnprintf(msg_proce,OLV_MAX_MSG_PROCE, fmt, arg_ptr);
	va_end(arg_ptr);
	if(k<0)
		msg_proce[0]=0;

	olvlog(LOG_TODO,"olv_limp_t",msg_proce);

	pon_olv_progre();
}
//*************************************************************************************
/**
 * Actualiza el progreso y la tarea por la que va al olivia general
 */
void Colv_thr::pon_olv_progre()
{	
	olv->lock->entro();
	olv->progreso=progreso;
	olv->tarea=tarea;
	strcpy_s(olv->msg_proce,OLV_MAX_MSG_PROCE,msg_proce);
	olv->lock->salgo();
}
//*************************************************************************************
#endif