log4cpp  1.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
BoostThreads.hh
Go to the documentation of this file.
1 /*
2  * BoostThreads.hh
3  *
4  * Copyright 2002, LifeLine Networks BV (www.lifeline.nl). All rights reserved.
5  * Copyright 2002, Bastiaan Bakker. All rights reserved.
6  *
7  * See the COPYING file for the terms of usage and distribution.
8  */
9 
10 #ifndef _LOG4CPP_THREADING_BOOSTTHREADS_HH
11 #define _LOG4CPP_THREADING_BOOSTTHREADS_HH
12 
13 #include <log4cpp/Portability.hh>
14 #include <boost/thread/thread.hpp>
15 #include <boost/thread/mutex.hpp>
16 #include <boost/thread/tss.hpp>
17 #include <cstdio>
18 #include <string>
19 
20 namespace log4cpp {
21  namespace threading {
22  static std::string getThreadId() {
23  char buffer[14];
24  // Boost.Threads stores the thread ID but doesn't expose it
25  sprintf(buffer, "not available");
26  return std::string(buffer);
27  };
28 
29  typedef boost::mutex Mutex;
30  typedef boost::mutex::scoped_lock ScopedLock;
31 
32  template<typename T> class ThreadLocalDataHolder {
33  public:
34  inline T* get() const {
35  return _localData.get();
36  };
37 
38  inline T* operator->() const { return _localData.get(); };
39  inline T& operator*() const { return *_localData.get(); };
40 
41  inline T* release() {
42  return _localData.release();
43  };
44 
45  inline void reset(T* p = NULL) {
46  _localData.reset(p);
47  };
48 
49  private:
50  boost::thread_specific_ptr<T> _localData;
51  };
52 
53  }
54 }
55 #endif
T & operator*() const
Definition: BoostThreads.hh:39
This class holds Thread local data of type T, i.e.
Definition: BoostThreads.hh:32
T * operator->() const
Definition: BoostThreads.hh:38
T * release()
Definition: BoostThreads.hh:41
The top level namespace for all 'Log for C++' types and classes.
Definition: AbortAppender.hh:16
boost::mutex Mutex
Dummy type 'int' for Mutex.
Definition: BoostThreads.hh:27
void reset(T *p=NULL)
Definition: BoostThreads.hh:45
static std::string getThreadId()
Return an identifier for the current thread.
Definition: BoostThreads.hh:22
boost::mutex::scoped_lock ScopedLock
Dummy type 'int' defintion of ScopedLock;.
Definition: BoostThreads.hh:30