#pragma once
#include "garray.h"
#include "utiles_def.h"
#include "lock.h"
class C_error;
//proporciona un control de usuarios (entra en usuarios etc...)
class Ccontrol_usu_con
{
public:
	//variables-----------------------------------------
	Cgarray<Usuario_conx_0>us;//array de usuarios
	Clock cerrojo;//interlock para protejer el array de usuarios
	int nb;//numero de usuarios borrados;
	int na;//numero de usuarios conectados;
	//c y d---------------------------------------------
	Ccontrol_usu_con(void);
	~Ccontrol_usu_con(void);
	//funciones-----------------------------------------
	int lee(char* path, C_error *er);//carga usuarios de archivo y dice los que ha aņadido
	BOOL guarda(char*path ,C_error *er);//guarda los usuarios en un archivo
	int pon(Usuario_conx_0 *u);//pone info del cliente en una posicion vacia de la lista (proteje antes usar)
	Usuario_conx_0* get( char* nombre );
	//funciones concurrente----------
	int add(Usuario_conx_0 *user);//aņade user CONCURRENTE
	Usuario_conx_0* conecta(char*nombre, char* key,int*err);//pone como conectado un usuario CONCURRENTE
	//err=1 usuariono existe,2 key incorrecta, 3 esta bloqueado, 4 usuario en uso
	BOOL desconecta(Usuario_conx_0 *user);//desconecta un usuario CONCURRENTE
	BOOL borra(Usuario_conx_0 *user);//borra usuario CONCURRENTE
	int esta(char *nombre);	//da el indice del usuario)(si esta)
	BYTE* get_copy( int*nu,int modo=0 );//da una copia de los usuarios actuales
	void verifica();//mira estado de lista y comprime si es necesario CONCURRENTE
	

};
