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

wait.h

00001 #ifndef CRYPTOPP_WAIT_H 00002 #define CRYPTOPP_WAIT_H 00003 00004 #include "cryptopp_config.h" 00005 00006 #ifdef SOCKETS_AVAILABLE 00007 00008 #include "cryptlib.h" 00009 #include <vector> 00010 00011 #ifdef USE_WINDOWS_STYLE_SOCKETS 00012 #include <windows.h> 00013 #else 00014 #include <sys/types.h> 00015 #endif 00016 00017 NAMESPACE_BEGIN(CryptoPP) 00018 00019 struct WaitingThreadData; 00020 00021 //! container of wait objects 00022 class WaitObjectContainer 00023 { 00024 public: 00025 //! exception thrown by WaitObjectContainer 00026 class Err : public Exception 00027 { 00028 public: 00029 Err(const std::string& s) : Exception(IO_ERROR, s) {} 00030 }; 00031 00032 WaitObjectContainer(); 00033 00034 void Clear(); 00035 void SetNoWait() {m_noWait = true;} 00036 bool Wait(unsigned long milliseconds); 00037 00038 #ifdef USE_WINDOWS_STYLE_SOCKETS 00039 ~WaitObjectContainer(); 00040 void AddHandle(HANDLE handle); 00041 #else 00042 void AddReadFd(int fd); 00043 void AddWriteFd(int fd); 00044 #endif 00045 00046 private: 00047 #ifdef USE_WINDOWS_STYLE_SOCKETS 00048 void CreateThreads(unsigned int count); 00049 std::vector<HANDLE> m_handles; 00050 std::vector<WaitingThreadData *> m_threads; 00051 HANDLE m_startWaiting; 00052 HANDLE m_stopWaiting; 00053 #else 00054 fd_set m_readfds, m_writefds; 00055 int m_maxFd; 00056 #endif 00057 bool m_noWait; 00058 }; 00059 00060 NAMESPACE_END 00061 00062 #endif 00063 00064 #endif

Generated on Wed Jul 28 08:07:09 2004 for Crypto++ by doxygen 1.3.7