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

sockets.hpp

Go to the documentation of this file.
00001 
00002 //
00003 // Fichero            : sockets.H
00004 // Autor              : 
00005 // Fecha creacion     : 15 / 11 / 2000
00006 // 
00007 // Descripcion        : Reactor singleton, Servicio
00008 //
00009 // Notas
00010 //   - 
00012 
00013 #ifndef __SOCKETS_H__
00014 #define __SOCKETS_H__
00015 
00016 #include "jic/log/trazas.hpp"
00017 #include "jic/exc/excepcion.hpp"
00018 
00019 #include <ace/Singleton.h>
00020 #include <ace/Svc_Handler.h>
00021 #include <ace/SOCK_Stream.h>
00022 #include <ace/Reactor.h>
00023 
00024 //@@j
00025 #include <ace/OS.h>
00026 
00027 
00028 /* #include "orb/globalorb.h" */
00029 
00030 namespace SOCKETS
00031 {
00032   EXCEPCION(ExcSocket);
00033   EXCEPCION_DE(ExcSocket, ExcBucleEventos);
00034 
00035   typedef ACE_Singleton<ACE_Reactor, ACE_Null_Mutex> Reactor;
00036   typedef ACE_SOCK_Stream Socket;
00037   typedef ACE_Svc_Handler<ACE_SOCK_STREAM, ACE_NULL_SYNCH> Servicio;
00038 
00039   class BucleEventos
00040   {
00041   public:
00042     static void svc()
00043     {
00044 //@@j
00045 ACE_Time_Value tiempo(0,50);
00046 
00047       O_TRAZA("Atendiendo Eventos...");
00048       while(1) ::SOCKETS::Reactor::instance()->handle_events(&tiempo);
00049     }
00050     
00051 /*
00052     static void start(bool enOtroThread = false)
00053     {
00054       if (enOtroThread)
00055       {
00056         if (-1 == ACE_Thread::spawn( (ACE_THR_FUNC)::SOCKETS::BucleEventos::svc, 0))
00057         {
00058           THROW(ExcBucleEventos, 
00059                 "Imposible lanzar un thread para el bucle de eventos");
00060         }
00061       }
00062       else
00063       {
00064         svc();
00065       }
00066     }
00067 */
00068     static void start()
00069     {
00070         svc();
00071     }
00072   };
00073   
00074 /* @@@ De momento no hay soporte a funcionalida de ORB: Cesar 07/01/2003
00075   
00076   class Orb
00077   {
00078   public:
00079     static void svc()
00080     {
00081       O_TRAZA("Lanzando Orb...");
00082       GORB->run(); 
00083     }
00084     
00085     static void start(bool enOtroThread = false)
00086     {
00087       if (enOtroThread)
00088       {
00089         if (-1 == ACE_Thread::spawn( (ACE_THR_FUNC)::SOCKETS::Orb::svc, 0))
00090         {
00091           THROW(ExcBucleEventos, 
00092                 "Imposible lanzar un thread para el bucle de eventos");
00093         }
00094       }
00095       else
00096       {
00097         svc();
00098       }
00099     }
00100   };
00101   
00102 */
00103 
00104 } /* SOCKETS */
00105 
00106 #endif
00107 
00108 
00109 

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