blob: 03fccfea3b2282f26765585106064b2391383f7d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
#include "Log_Message_Receiver.h"
// Type based log message receiver.
template<ACE_SYNCH_1> void
Static_Log_Message_Receiver<ACE_SYNCH_2>::log_record (char const *hostname,
ACE_Log_Record &record)
{
#if defined (ACE_HAS_THREADS)
static ACE_SYNCH_MUTEX_T lock;
ACE_Guard<ACE_SYNCH_MUTEX_T> guard (lock);
#endif /* ACE_HAS_THREADS */
record.print(hostname, 0, stderr);
};
template<ACE_SYNCH_1>
ACE_SYNCH_MUTEX_T Log_Message_Receiver_Impl<ACE_SYNCH_2>::copy_lock_;
template<ACE_SYNCH_1> inline
Log_Message_Receiver_Impl<ACE_SYNCH_2>::Log_Message_Receiver_Impl (void)
: count_ (0)
{
}
template<ACE_SYNCH_1> inline Log_Message_Receiver_Impl<ACE_SYNCH_2> *
Log_Message_Receiver_Impl<ACE_SYNCH_2>::create (void)
{
return new Log_Message_Receiver_Impl<ACE_SYNCH_2>;
}
template<ACE_SYNCH_1> inline
Log_Message_Receiver_Impl<ACE_SYNCH_2> *
Log_Message_Receiver_Impl<ACE_SYNCH_2>::attach (Log_Message_Receiver_Impl<ACE_SYNCH_2> *body)
{
assert(body != 0);
Guard guard(copy_lock_);
++body->count_;
return body;
}
template<ACE_SYNCH_1> inline void
Log_Message_Receiver_Impl<ACE_SYNCH_2>::detach (Log_Message_Receiver_Impl<ACE_SYNCH_2> *body)
{
assert(body != 0);
Guard guard(copy_lock_);
if (body->count_-- == 0)
delete body;
}
// Type based log message receiver
template<ACE_SYNCH_1> inline void
Log_Message_Receiver_Impl<ACE_SYNCH_2>::log_record (char const *hostname,
ACE_Log_Record &record)
{
ACE_MT (Guard guard (print_lock_));
record.print (hostname, 0, stderr);
};
template<ACE_SYNCH_1> inline
Log_Message_Receiver_Impl<ACE_SYNCH_2>::~Log_Message_Receiver_Impl (void)
{
assert (count_ == 0 - 1);
}
template<ACE_SYNCH_1>
Log_Message_Receiver<ACE_SYNCH_2>::Log_Message_Receiver (void)
: receiver_impl_ (Log_Message_Receiver_Impl<ACE_SYNCH_2>::create ())
{
assert (receiver_impl_ != 0);
}
template<ACE_SYNCH_1>
Log_Message_Receiver<ACE_SYNCH_2>::Log_Message_Receiver (const Log_Message_Receiver<ACE_SYNCH_2>& lhs)
: receiver_impl_ (Log_Message_Receiver_Impl<ACE_SYNCH_2>::attach (lhs.receiver_impl_))
{
assert (receiver_impl_ != 0);
}
// Type based log message receiver
template<ACE_SYNCH_1> void
Log_Message_Receiver<ACE_SYNCH_2>::log_record (char const *hostname,
ACE_Log_Record &record)
{
assert (receiver_impl_ != 0);
receiver_impl_->log_record (hostname, record);
}
template<ACE_SYNCH_1>
Log_Message_Receiver<ACE_SYNCH_2>::~Log_Message_Receiver (void)
{
assert (receiver_impl_ != 0);
Log_Message_Receiver_Impl<ACE_SYNCH_2>::detach (receiver_impl_);
}
|