00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef LOG4SENDPP_THREADDICTIONARY_H
00031 #define LOG4SENDPP_THREADDICTIONARY_H
00032
00033 #include <log4sendpp/log4sendpp.h>
00034
00035 #ifdef __WIN32__
00036 #include <windows.h>
00037 #endif
00038
00039 #include <string>
00040 #include <vector>
00041
00042
00043 LOG4SENDPP_NS_START
00044
00045
00048 class LOG4SENDPP_API_DECL0 ThreadDictionary
00049 {
00050 public:
00051
00052 #ifdef __WIN32__
00053 typedef HANDLE Handle;
00054 #elif defined (__unix__)
00055 typedef pthread_t Handle;
00056 #else
00057 #error platform specific code is missing
00058 #endif
00059
00065 void add(Handle handle, const LOG4SENDPP_STD_NS::string &nickname = "");
00066
00070 void remove(Handle handle);
00071
00075 unsigned numThreads() const;
00076
00080 LOG4SENDPP_STD_NS::string getNickname(Handle handle) const;
00081
00085 static LOG4SENDPP_STD_NS::string getCurrentNickname();
00086
00090 static ThreadDictionary * get();
00091
00095 static Handle getCurrentHandle();
00096
00097 private:
00098
00101 ThreadDictionary();
00102
00103 private:
00104
00105 LOG4SENDPP_STD_NS::vector<Handle> handles;
00106 LOG4SENDPP_STD_NS::vector<LOG4SENDPP_STD_NS::string> names;
00107
00108 static ThreadDictionary threadDict;
00109 };
00110
00111
00112 LOG4SENDPP_NS_END
00113
00114
00115 #endif // LOG4SENDPP_THREADDICTIONARY_H