10 #ifndef _LOG4SHIB_THREADING_OMNITHREADS_HH
11 #define _LOG4SHIB_THREADING_OMNITHREADS_HH
14 #include <omnithread.h>
31 typedef omni_mutex
Mutex;
48 template<
typename T>
class ThreadLocalDataHolder {
53 _key(omni_thread::allocate_key()) {};
62 inline T*
get()
const {
63 Holder* holder =
dynamic_cast<Holder*
>(
64 ::omni_thread::self()->get_value(_key));
65 return (holder) ? holder->data : NULL;
91 Holder* holder =
dynamic_cast<Holder*
>(
92 ::omni_thread::self()->get_value(_key));
95 result = holder->data;
109 Holder* holder =
dynamic_cast<Holder*
>(
110 ::omni_thread::self()->get_value(_key));
117 holder =
new Holder(p);
118 ::omni_thread::self()->set_value(_key, holder);
123 class Holder :
public omni_thread::value_t {
126 virtual ~Holder() {
if (data)
delete (data); };
129 Holder(
const Holder& other);
130 Holder& operator=(
const Holder& other);
133 omni_thread::key_t _key;