Skip to content

Commit 7151e26

Browse files
author
Matthew Yacobucci
committed
Code review notes
Build showed private references aren't resolved during macro expansion. Removing some of the DRY code to solve build.
1 parent 1048500 commit 7151e26

File tree

1 file changed

+66
-16
lines changed

1 file changed

+66
-16
lines changed

src/log.rs

Lines changed: 66 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
/// Utility function to provide typed checking of the mask's field state.
22
#[inline(always)]
3-
fn check_mask(mask: DebugMask, log_level: usize) -> bool {
3+
pub fn check_mask(mask: DebugMask, log_level: usize) -> bool {
44
let mask_bits: u32 = mask.into();
55
if log_level & mask_bits as usize == 0 {
66
return false;
77
}
88
true
99
}
1010

11+
/*
1112
/// Internal macro, provided to reduce code duplication.
1213
///
1314
/// Expects an ngx_log_t and message format template.
@@ -21,6 +22,7 @@ macro_rules! _ngx_log_debug_internal {
2122
}
2223
}
2324
}
25+
*/
2426

2527
/// Write to logger at a specified level.
2628
///
@@ -31,7 +33,13 @@ macro_rules! ngx_log_debug {
3133
( $log:expr, $($arg:tt)* ) => {
3234
let log_level = unsafe { (*$log).log_level };
3335
if log_level != 0 {
34-
$crate::_ngx_log_debug_internal!($log, $($arg)*);
36+
// $crate::_ngx_log_debug_internal!($log, $($arg)*);
37+
let level = $crate::ffi::NGX_LOG_DEBUG as $crate::ffi::ngx_uint_t;
38+
let fmt = ::std::ffi::CString::new("%s").unwrap();
39+
let c_message = ::std::ffi::CString::new(format!($($arg)*)).unwrap();
40+
unsafe {
41+
$crate::ffi::ngx_log_error_core(level, $log, 0, fmt.as_ptr(), c_message.as_ptr());
42+
}
3543
}
3644
}
3745
}
@@ -110,44 +118,86 @@ impl From<DebugMask> for u32 {
110118
macro_rules! ngx_log_debug_mask {
111119
( DebugMask::Core, $log:expr, $($arg:tt)* ) => ({
112120
let log_level = unsafe { (*$log).log_level };
113-
if check_mask(DebugMask::Core, log_level) {
114-
$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
121+
if $crate::log::check_mask(DebugMask::Core, log_level) {
122+
//$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
123+
let level = $crate::ffi::NGX_LOG_DEBUG as $crate::ffi::ngx_uint_t;
124+
let fmt = ::std::ffi::CString::new("%s").unwrap();
125+
let c_message = ::std::ffi::CString::new(format!($($arg)*)).unwrap();
126+
unsafe {
127+
$crate::ffi::ngx_log_error_core(level, $log, 0, fmt.as_ptr(), c_message.as_ptr());
128+
}
115129
}
116130
});
117131
( DebugMask::Alloc, $log:expr, $($arg:tt)* ) => ({
118132
let log_level = unsafe { (*$log).log_level };
119-
if check_mask(DebugMask::Alloc, log_level) {
120-
$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
133+
if $crate::log::check_mask(DebugMask::Alloc, log_level) {
134+
//$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
135+
let level = $crate::ffi::NGX_LOG_DEBUG as $crate::ffi::ngx_uint_t;
136+
let fmt = ::std::ffi::CString::new("%s").unwrap();
137+
let c_message = ::std::ffi::CString::new(format!($($arg)*)).unwrap();
138+
unsafe {
139+
$crate::ffi::ngx_log_error_core(level, $log, 0, fmt.as_ptr(), c_message.as_ptr());
140+
}
121141
}
122142
});
123143
( DebugMask::Mutex, $log:expr, $($arg:tt)* ) => ({
124144
let log_level = unsafe { (*$log).log_level };
125-
if check_mask(DebugMask::Mutex, log_level) {
126-
$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
145+
if $crate::log::check_mask(DebugMask::Mutex, log_level) {
146+
//$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
147+
let level = $crate::ffi::NGX_LOG_DEBUG as $crate::ffi::ngx_uint_t;
148+
let fmt = ::std::ffi::CString::new("%s").unwrap();
149+
let c_message = ::std::ffi::CString::new(format!($($arg)*)).unwrap();
150+
unsafe {
151+
$crate::ffi::ngx_log_error_core(level, $log, 0, fmt.as_ptr(), c_message.as_ptr());
152+
}
127153
}
128154
});
129155
( DebugMask::Event, $log:expr, $($arg:tt)* ) => ({
130156
let log_level = unsafe { (*$log).log_level };
131-
if check_mask(DebugMask::Event, log_level) {
132-
$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
157+
if $crate::log::check_mask(DebugMask::Event, log_level) {
158+
//$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
159+
let level = $crate::ffi::NGX_LOG_DEBUG as $crate::ffi::ngx_uint_t;
160+
let fmt = ::std::ffi::CString::new("%s").unwrap();
161+
let c_message = ::std::ffi::CString::new(format!($($arg)*)).unwrap();
162+
unsafe {
163+
$crate::ffi::ngx_log_error_core(level, $log, 0, fmt.as_ptr(), c_message.as_ptr());
164+
}
133165
}
134166
});
135167
( DebugMask::Http, $log:expr, $($arg:tt)* ) => ({
136168
let log_level = unsafe { (*$log).log_level };
137-
if check_mask(DebugMask::Http, log_level) {
138-
$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
169+
if $crate::log::check_mask(DebugMask::Http, log_level) {
170+
//$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
171+
let level = $crate::ffi::NGX_LOG_DEBUG as $crate::ffi::ngx_uint_t;
172+
let fmt = ::std::ffi::CString::new("%s").unwrap();
173+
let c_message = ::std::ffi::CString::new(format!($($arg)*)).unwrap();
174+
unsafe {
175+
$crate::ffi::ngx_log_error_core(level, $log, 0, fmt.as_ptr(), c_message.as_ptr());
176+
}
139177
}
140178
});
141179
( DebugMask::Mail, $log:expr, $($arg:tt)* ) => ({
142180
let log_level = unsafe { (*$log).log_level };
143-
if check_mask(DebugMask::Mail, log_level) {
144-
$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
181+
if $crate::log::check_mask(DebugMask::Mail, log_level) {
182+
//$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
183+
let level = $crate::ffi::NGX_LOG_DEBUG as $crate::ffi::ngx_uint_t;
184+
let fmt = ::std::ffi::CString::new("%s").unwrap();
185+
let c_message = ::std::ffi::CString::new(format!($($arg)*)).unwrap();
186+
unsafe {
187+
$crate::ffi::ngx_log_error_core(level, $log, 0, fmt.as_ptr(), c_message.as_ptr());
188+
}
145189
}
146190
});
147191
( DebugMask::Stream, $log:expr, $($arg:tt)* ) => ({
148192
let log_level = unsafe { (*$log).log_level };
149-
if check_mask(DebugMask::Stream, log_level) {
150-
$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
193+
if $crate::log::check_mask(DebugMask::Stream, log_level) {
194+
//$crate::_ngx_log_debug_internal!(log, $($arg:tt)*);
195+
let level = $crate::ffi::NGX_LOG_DEBUG as $crate::ffi::ngx_uint_t;
196+
let fmt = ::std::ffi::CString::new("%s").unwrap();
197+
let c_message = ::std::ffi::CString::new(format!($($arg)*)).unwrap();
198+
unsafe {
199+
$crate::ffi::ngx_log_error_core(level, $log, 0, fmt.as_ptr(), c_message.as_ptr());
200+
}
151201
}
152202
});
153203
}

0 commit comments

Comments
 (0)