@@ -34,27 +34,37 @@ int const LOG4CPLUS_MESSAGE_VERSION = 3;
34
34
35
35
36
36
#if ! defined (LOG4CPLUS_SINGLE_THREADED)
37
- SocketAppender::ConnectorThread::ConnectorThread (
38
- SocketAppender & socket_appender)
39
- : sa (socket_appender)
37
+
38
+ namespace helpers
39
+ {
40
+
41
+ IConnectorThreadClient::~IConnectorThreadClient ()
42
+ { }
43
+
44
+ //
45
+ //
46
+ //
47
+
48
+ ConnectorThread::ConnectorThread (
49
+ IConnectorThreadClient & client)
50
+ : ctc (client)
40
51
, exit_flag (false )
41
52
{ }
42
53
43
54
44
- SocketAppender:: ConnectorThread::~ConnectorThread ()
55
+ ConnectorThread::~ConnectorThread ()
45
56
{ }
46
57
47
58
48
59
void
49
- SocketAppender:: ConnectorThread::run ()
60
+ ConnectorThread::run ()
50
61
{
51
62
while (true )
52
63
{
53
64
trigger_ev.timed_wait (30 * 1000 );
54
65
55
66
helpers::getLogLog ().debug (
56
- LOG4CPLUS_TEXT (" SocketAppender::ConnectorThread::run()" )
57
- LOG4CPLUS_TEXT (" - running..." ));
67
+ LOG4CPLUS_TEXT (" ConnectorThread::run()- running..." ));
58
68
59
69
// Check exit condition as the very first thing.
60
70
@@ -67,16 +77,17 @@ SocketAppender::ConnectorThread::run ()
67
77
68
78
// Do not try to re-open already open socket.
69
79
80
+ helpers::Socket & client_socket = ctc.ctcGetSocket ();
81
+ thread::Mutex const & client_access_mutex = ctc.ctcGetAccessMutex ();
70
82
{
71
- thread::MutexGuard guard (sa. access_mutex );
72
- if (sa. socket .isOpen ())
83
+ thread::MutexGuard guard (client_access_mutex );
84
+ if (client_socket .isOpen ())
73
85
continue ;
74
86
}
75
87
76
88
// The socket is not open, try to reconnect.
77
89
78
- helpers::Socket new_socket (sa.host ,
79
- static_cast <unsigned short >(sa.port ));
90
+ helpers::Socket new_socket (ctc.ctcConnect ());
80
91
if (! new_socket.isOpen ())
81
92
{
82
93
helpers::getLogLog ().error (
@@ -91,19 +102,19 @@ SocketAppender::ConnectorThread::run ()
91
102
continue ;
92
103
}
93
104
94
- // Connection was successful, move the socket into SocketAppender .
105
+ // Connection was successful, move the socket into client .
95
106
96
107
{
97
- thread::MutexGuard guard (sa. access_mutex );
98
- sa. socket = new_socket;
99
- sa. connected = true ;
108
+ thread::MutexGuard guard (client_access_mutex );
109
+ client_socket = new_socket;
110
+ ctc. ctcSetConnected () ;
100
111
}
101
112
}
102
113
}
103
114
104
115
105
116
void
106
- SocketAppender:: ConnectorThread::terminate ()
117
+ ConnectorThread::terminate ()
107
118
{
108
119
{
109
120
thread::MutexGuard guard (access_mutex);
@@ -115,11 +126,13 @@ SocketAppender::ConnectorThread::terminate ()
115
126
116
127
117
128
void
118
- SocketAppender:: ConnectorThread::trigger ()
129
+ ConnectorThread::trigger ()
119
130
{
120
131
trigger_ev.signal ();
121
132
}
122
133
134
+ } // namespace helpers
135
+
123
136
#endif
124
137
125
138
@@ -155,10 +168,6 @@ SocketAppender::SocketAppender(const helpers::Properties & properties)
155
168
156
169
SocketAppender::~SocketAppender ()
157
170
{
158
- #if ! defined (LOG4CPLUS_SINGLE_THREADED)
159
- connector->terminate ();
160
- #endif
161
-
162
171
destructorImpl ();
163
172
}
164
173
@@ -202,7 +211,7 @@ SocketAppender::initConnector ()
202
211
{
203
212
#if ! defined (LOG4CPLUS_SINGLE_THREADED)
204
213
connected = true ;
205
- connector = new ConnectorThread (*this );
214
+ connector = new helpers:: ConnectorThread (*this );
206
215
connector->start ();
207
216
#endif
208
217
}
@@ -248,6 +257,34 @@ SocketAppender::append(const spi::InternalLoggingEvent& event)
248
257
}
249
258
250
259
260
+ thread::Mutex const &
261
+ SocketAppender::ctcGetAccessMutex () const
262
+ {
263
+ return access_mutex;
264
+ }
265
+
266
+
267
+ helpers::Socket &
268
+ SocketAppender::ctcGetSocket ()
269
+ {
270
+ return socket;
271
+ }
272
+
273
+
274
+ helpers::Socket
275
+ SocketAppender::ctcConnect ()
276
+ {
277
+ return helpers::Socket (host, static_cast <unsigned short >(port));
278
+ }
279
+
280
+ void
281
+ SocketAppender::ctcSetConnected ()
282
+ {
283
+ connected = true ;
284
+ }
285
+
286
+
287
+
251
288
// ///////////////////////////////////////////////////////////////////////////
252
289
// namespace helpers methods
253
290
// ///////////////////////////////////////////////////////////////////////////
0 commit comments