00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef CONEXUSENDPOINTSERVER_H
00020 #define CONEXUSENDPOINTSERVER_H
00021
00022 #include <conexus/server.h>
00023 #include <conexus/endpoint.h>
00024
00025 namespace Conexus
00026 {
00027
00031 class EndpointServer : public Server
00032 {
00033 public:
00034 EndpointServer();
00035
00036 virtual ~EndpointServer();
00037
00038 virtual void start(bool use_dispatcher=false);
00039 virtual void stop();
00040
00041 sigc::signal<void, Endpoint::pointer> signal_new_endpoint();
00042
00043 virtual const std::string& object_type() { static std::string s("Conexus::EndpointServer"); return s; }
00044
00045 protected:
00046 sigc::signal<void, Endpoint::pointer> m_signal_new_endpoint;
00047 sigc::connection m_dispatcher_connection;
00048 std::queue<Endpoint::pointer> m_endpoint_queue;
00049
00050
00051 pthread_mutex_t m_mutex_signal_endpoint;
00052 pthread_mutex_t m_mutex_endpoint_queue;
00053
00054 void queue_endpoint( Endpoint::pointer endpoint );
00055 void emit_endpoints( );
00056
00057 };
00058
00059 }
00060
00061 #endif