58 lines
2.3 KiB
C++
58 lines
2.3 KiB
C++
#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<Msg_evento_log> 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<63>n poner a true la variable fin y esperar a que salgan todos los clientes conectados (nconex<=0)
|
||
*/
|