Skip to content

Commit 3197d62

Browse files
committed
SRT: Refine the lock for log.
1 parent edc291a commit 3197d62

8 files changed

+44
-82
lines changed

trunk/auto/options.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
help=no
55
# feature options
66
SRS_HDS=NO
7-
SRS_SRT=NO
7+
SRS_SRT=YES
88
SRS_RTC=YES
99
SRS_CXX11=YES
1010
SRS_CXX14=NO

trunk/configure

+1-1
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ MODULE_ID="CORE"
199199
MODULE_DEPENDS=()
200200
ModuleLibIncs=(${SRS_OBJS_DIR})
201201
MODULE_FILES=("srs_core" "srs_core_version5" "srs_core_autofree" "srs_core_performance"
202-
"srs_core_time" "srs_core_platform" "srs_core_lock")
202+
"srs_core_time" "srs_core_platform")
203203
CORE_INCS="src/core"; MODULE_DIR=${CORE_INCS} . auto/modules.sh
204204
CORE_OBJS="${MODULE_OBJS[@]}"
205205
#

trunk/src/app/srs_app_log.cpp

+17-15
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#include <srs_kernel_error.hpp>
1919
#include <srs_app_utility.hpp>
2020
#include <srs_kernel_utility.hpp>
21-
#include <srs_core_lock.hpp>
21+
#include <srs_app_threads.hpp>
2222

2323
// the max size of a line of log.
2424
#define LOG_MAX_SIZE 8192
@@ -37,7 +37,8 @@ SrsFileLog::SrsFileLog()
3737
log_to_file_tank = false;
3838
utc = false;
3939

40-
pthread_mutex_init(&mutex_, NULL);
40+
int rc = pthread_mutex_init(&mutex_, NULL);
41+
srs_assert(!rc);
4142
}
4243

4344
SrsFileLog::~SrsFileLog()
@@ -53,7 +54,8 @@ SrsFileLog::~SrsFileLog()
5354
_srs_config->unsubscribe(this);
5455
}
5556

56-
pthread_mutex_destroy(&mutex_);
57+
int rc = pthread_mutex_destroy(&mutex_);
58+
srs_assert(!rc);
5759
}
5860

5961
srs_error_t SrsFileLog::initialize()
@@ -89,18 +91,18 @@ void SrsFileLog::verbose(const char* tag, SrsContextId context_id, const char* f
8991
if (level > SrsLogLevelVerbose) {
9092
return;
9193
}
92-
94+
9395
int size = 0;
9496
if (!srs_log_header(log_data, LOG_MAX_SIZE, utc, false, tag, context_id, "Verb", &size)) {
9597
return;
9698
}
97-
99+
98100
va_list ap;
99101
va_start(ap, fmt);
100102
// we reserved 1 bytes for the new line.
101103
size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap);
102104
va_end(ap);
103-
105+
104106
write_log(fd, log_data, size, SrsLogLevelVerbose);
105107
}
106108

@@ -111,18 +113,18 @@ void SrsFileLog::info(const char* tag, SrsContextId context_id, const char* fmt,
111113
if (level > SrsLogLevelInfo) {
112114
return;
113115
}
114-
116+
115117
int size = 0;
116118
if (!srs_log_header(log_data, LOG_MAX_SIZE, utc, false, tag, context_id, "Debug", &size)) {
117119
return;
118120
}
119-
121+
120122
va_list ap;
121123
va_start(ap, fmt);
122124
// we reserved 1 bytes for the new line.
123125
size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap);
124126
va_end(ap);
125-
127+
126128
write_log(fd, log_data, size, SrsLogLevelInfo);
127129
}
128130

@@ -133,18 +135,18 @@ void SrsFileLog::trace(const char* tag, SrsContextId context_id, const char* fmt
133135
if (level > SrsLogLevelTrace) {
134136
return;
135137
}
136-
138+
137139
int size = 0;
138140
if (!srs_log_header(log_data, LOG_MAX_SIZE, utc, false, tag, context_id, "Trace", &size)) {
139141
return;
140142
}
141-
143+
142144
va_list ap;
143145
va_start(ap, fmt);
144146
// we reserved 1 bytes for the new line.
145147
size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap);
146148
va_end(ap);
147-
149+
148150
write_log(fd, log_data, size, SrsLogLevelTrace);
149151
}
150152

@@ -155,18 +157,18 @@ void SrsFileLog::warn(const char* tag, SrsContextId context_id, const char* fmt,
155157
if (level > SrsLogLevelWarn) {
156158
return;
157159
}
158-
160+
159161
int size = 0;
160162
if (!srs_log_header(log_data, LOG_MAX_SIZE, utc, true, tag, context_id, "Warn", &size)) {
161163
return;
162164
}
163-
165+
164166
va_list ap;
165167
va_start(ap, fmt);
166168
// we reserved 1 bytes for the new line.
167169
size += vsnprintf(log_data + size, LOG_MAX_SIZE - size, fmt, ap);
168170
va_end(ap);
169-
171+
170172
write_log(fd, log_data, size, SrsLogLevelWarn);
171173
}
172174

trunk/src/app/srs_app_log.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include <string.h>
1313
#include <string>
14+
#include <pthread.h>
1415

1516
#include <srs_app_reload.hpp>
1617
#include <srs_protocol_log.hpp>

trunk/src/app/srs_app_threads.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <srs_app_srt_source.hpp>
2727
#endif
2828

29+
#include <stdlib.h>
2930
#include <string>
3031
using namespace std;
3132

@@ -427,3 +428,14 @@ srs_error_t srs_thread_initialize()
427428
return err;
428429
}
429430

431+
SrsScopeLock::SrsScopeLock(pthread_mutex_t* mutex)
432+
{
433+
mutex_ = mutex;
434+
pthread_mutex_lock(mutex_);
435+
}
436+
437+
SrsScopeLock::~SrsScopeLock()
438+
{
439+
pthread_mutex_unlock(mutex_);
440+
}
441+

trunk/src/app/srs_app_threads.hpp

+12
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
#include <srs_app_hourglass.hpp>
1313

14+
#include <pthread.h>
15+
1416
// Protect server in high load.
1517
class SrsCircuitBreaker : public ISrsFastTimer
1618
{
@@ -49,5 +51,15 @@ extern SrsCircuitBreaker* _srs_circuit_breaker;
4951
// Initialize global or thread-local variables.
5052
extern srs_error_t srs_thread_initialize();
5153

54+
// Lock the mutex when enter current scope, and unlock it when out.
55+
class SrsScopeLock
56+
{
57+
private:
58+
pthread_mutex_t* mutex_;
59+
public:
60+
SrsScopeLock(pthread_mutex_t* mutex);
61+
~SrsScopeLock();
62+
};
63+
5264
#endif
5365

trunk/src/core/srs_core_lock.cpp

-8
This file was deleted.

trunk/src/core/srs_core_lock.hpp

-57
This file was deleted.

0 commit comments

Comments
 (0)