#pragma once
#include "_proceso.h"
#include "static_cola.h"
#include "base_head.h"
typedef struct Timers_cola_asincrona
{
	int t;
	__int64 ultimo;
	int tipo;
}Timers_cola_asincrona;

class UTILES_EXPORT Ccola_asincrona :public C_proceso
{
public:

private:
	Cstatic_cola tareas;
	__int64 t;
	int n_timers;
	int max_timers;
	Timers_cola_asincrona* timers;
	BOOL ultima_tarea;//indica si hay que hacer ultima tarea antes de desconectar
	BOOL tipo_u_tarea;//tipo de ultima tarea
public:
	BOOL pirate;
	int time_sleep;
	
	
	Ccola_asincrona(void);
	~Ccola_asincrona(void);
	//funciones
	void inicia(int size,int cap=200);//prepara cola con elementos de tamaņo size y capacidad de la coloa de cap
	BOOL add(int tipo,BYTE*e);//pone una tarea nueva
	void on_timer(int t,int tipo);//pone una tarea cada t milesimas de segundo (solo el tipo)
	virtual void rum();
	void termina();//finaliza thred cola asincrona (espera)
	void add_fin(int tipo);//pone ultima tarea(antes de finalizar)
	//override
	void virtual procesa(int tipo, BYTE* e);

private:
	void cuida();//pide memoria para timers
	

};
