Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

acceptor.hpp

Go to the documentation of this file.
00001 
00002 //
00003 // Fichero            : acceptor.h
00004 // Autor              : 
00005 // Fecha creacion     : 08 / 11 / 2000
00006 // 
00007 // Descripcion        : Encapsulacion de ACE_Acceptor para facilitar el uso
00008 //                      y evitar tareas repetitivas.
00009 //
00010 //                      Acepta conexiones y lanza un 'servicio' para atenderla.
00011 //
00012 //                      Cada vez que llega una conexion, se llama al metodo
00013 //                      'open' del 'svcHnd'
00014 //
00015 // Notas
00016 //    - El tipo que parametriza la clase (representado en el template 
00017 //      como ServiceHandler) ha de ser una clase derivada de 'ACE_Svc_Handler'
00018 //
00019 //   -  Es necesario llamar al bucle:
00020 // 
00021 //              while(1)
00022 //                Reactor::instance()->handle_events();
00023 // 
00024 //      una vez instanciado el 'Aceptor'para que reaccione a los eventos 
00025 //
00027 
00028 #ifndef __ACEPTOR_H__
00029 #define __ACEPTOR_H__
00030 
00031 #include "jic/socket/sockets.hpp"
00032 #include "jic/log/trazas.hpp"
00033 
00034 #include "ace/Acceptor.h"
00035 #include "ace/SOCK_Acceptor.h"
00036 
00037 #include <string>
00038 
00039 
00040 
00041 namespace SOCKETS
00042 {
00043 
00044   enum PoliticaCreacionSvcHnd
00045   {
00046     SINGLETON,
00047     NO_SINGLETON
00048   };
00049 
00050   //============================================================================
00051   // Clase Template: Acceptor
00052   //============================================================================
00053   template<class ServiceHandler>
00054   class Acceptor : public ACE_Acceptor<ServiceHandler, ACE_SOCK_ACCEPTOR>
00055   {
00056   public:
00057     // Constructores
00058     Acceptor(int puerto, ServiceHandler *svcHnd);
00059     Acceptor(int puerto, PoliticaCreacionSvcHnd politica = SINGLETON);
00060 
00061     // Utilizo mi SvcHandler en vez de dejarle crear uno nuevo a el
00062     // OJO !! NO TOCAR NI SOBRECARGAR
00063     virtual int make_svc_handler (ServiceHandler *&svcHnd);
00064 
00065   private:
00066     // Evito que se pueda llamar al constructor por defecto
00067     Acceptor() {};
00068     
00069     ServiceHandler * _svcHnd; // Service Hander
00070   };
00071 
00072 #if defined (ACE_TEMPLATES_REQUIRE_SOURCE)
00073 #include "acceptor.cpp"
00074 #endif /* ACE_TEMPLATES_REQUIRE_SOURCE */
00075 
00076 } // del namespace
00077 
00078 #endif
00079 
00080 
00081 
00082 

Generated on Wed Mar 5 21:31:47 2003 for JIC by doxygen1.3-rc3