#pragma once #include "_log.h" #include "garray_cicli.h" #include "proceso_cliente.h" #include "sock_sv.h" //falta hacer login revision de paquetes y clase generica de usuarios class Cclient_gconect_srv; class UTILES_EXPORT C_escucha_conex_srv//clase para escuchar paquetes recividos en conex_srv { public: virtual void on_recivido(Csock_cl *soc, BYTE *buf, int nb)=0;//puntero a socket, puntero a paquete, numero de bytes del paquete //para desconectar poner a true la variable pirate del soc virtual void borra_cliente(Cclient_gconect_srv *cli)=0;//funcion en la que se entra cuando se cierra un cliente(se ha de mandar un mensaje a el principal) //no se olvide de restar 1 al numero de thread }; //clase conexion entre servidores (servicios) y aplicaciones de administracion class UTILES_EXPORT Cgconect_srv: public C_escucha_log, public Cescucha_sock_sv { public: //variables---------------------------- Cgarray_cicli mens;//cola de mensajes de log Clock inter_msg;//interlock para protejer cola de mensajes Csock_sv soc_sv;//socket de escucha C_escucha_conex_srv *escucha;//recibe paquetes de conexion si no son de log BOOL fin;//indica si hay que irse o no; int nconex;//indica el numero de conexiones activas en el momento /*Clock inter_conex;//interlock para gestionar clientes Csock_cl *soc_basura;//puntero a socket para borrar*/ //v y d-------------------------------- Cgconect_srv(void); ~Cgconect_srv(void); //funciones---------------------------- virtual void log_ext( __time64_t tiemp, char *modulo, char *fmt );//pone otro mensaje en cola virtual Cproceso_cliente* crea_cliente( void );//funcion que crea el cliente }; class UTILES_EXPORT Cclient_gconect_srv: public Cproceso_cliente//thread de clientes { public: BOOL codifica;//indica si la comunicacion va cifrada Cgconect_srv *principal;//puntero a clase principal virtual void rum();//funcion thead de conexion }; //consejos de utilizacion----------------------------------------- /* crear clase y configurar interface (escucha). configurar socket y poner en lisener. En el evento borra_cliente enviar un mensaje al que a creado el socket listener. Dentro de dicho mensaje restar 1 a la variable nconex y hacer un delete al argumento de cliente para finalizar la aplicación poner a true la variable fin y esperar a que salgan todos los clientes conectados (nconex<=0) */