00001 /* **************************************************************** 00002 **************************************************************** 00003 * Com++ Professional (c) 2009 C++ World 00004 * http://www.cplusplusworld.com/ mailto:compp@cplusplusworld.com 00005 **************************************************************** 00006 **************************************************************** 00007 */ 00008 00009 #ifndef POLL_H 00010 #define POLL_H 00011 00012 00013 #include "ComPlusPlus/Comm.h" 00014 #include <map> 00015 #include <iterator> 00016 00017 00018 namespace compp { 00019 00020 const int StdPollTimeout = 1000000; 00021 00022 class Poll { 00023 00024 protected: 00025 int NumConn; 00026 std::map< int, Comm*> WriteContainer; 00027 std::map< int, Comm*> ReadContainer; 00028 std::map< int, Comm*> ErrorContainer; 00029 00030 fd_set rdset, wrset, errset; 00031 int Timeout ; 00032 00033 00034 public: 00035 virtual ~Poll () ; 00036 Poll ( ) ; 00037 void AddWriteQueue( Comm * Channel ); 00038 void AddReadQueue ( Comm * Channel ); 00039 void AddErrorQueue( Comm * Channel ); 00040 void EmptyWriteQueue( ); 00041 void EmptyReadQueue ( ); 00042 void EmptyErrorQueue( ); 00043 void EmptyAllQueues( ) ; 00044 void SetTimeout ( int usecs ); 00045 int Multiplexer ( ) ; 00046 int Multiplexer ( int Timeout ) ; 00047 bool CheckAll( Comm * Channel ); 00048 bool CheckReadQueue( Comm * Channel ); 00049 bool CheckWriteQueue( Comm * Channel ); 00050 bool CheckErrorQueue( Comm * Channel ); 00051 00052 } ; 00053 } 00054 #endif 00055 00056
1.6.3