|
|
|
@ -180,6 +180,7 @@ void rotate_if_needed(LoggerdState *s) { |
|
|
|
|
void loggerd_thread() { |
|
|
|
|
// setup messaging
|
|
|
|
|
typedef struct QlogState { |
|
|
|
|
std::string name; |
|
|
|
|
int counter, freq; |
|
|
|
|
} QlogState; |
|
|
|
|
std::unordered_map<SubSocket*, QlogState> qlog_states; |
|
|
|
@ -195,7 +196,11 @@ void loggerd_thread() { |
|
|
|
|
SubSocket * sock = SubSocket::create(s.ctx, it.name); |
|
|
|
|
assert(sock != NULL); |
|
|
|
|
poller->registerSocket(sock); |
|
|
|
|
qlog_states[sock] = {.counter = 0, .freq = it.decimation}; |
|
|
|
|
qlog_states[sock] = { |
|
|
|
|
.name = it.name, |
|
|
|
|
.counter = 0, |
|
|
|
|
.freq = it.decimation, |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// init logger
|
|
|
|
@ -219,6 +224,7 @@ void loggerd_thread() { |
|
|
|
|
// poll for new messages on all sockets
|
|
|
|
|
for (auto sock : poller->poll(1000)) { |
|
|
|
|
// drain socket
|
|
|
|
|
int count = 0; |
|
|
|
|
QlogState &qs = qlog_states[sock]; |
|
|
|
|
Message *msg = nullptr; |
|
|
|
|
while (!do_exit && (msg = sock->receive(true))) { |
|
|
|
@ -233,6 +239,12 @@ void loggerd_thread() { |
|
|
|
|
double seconds = (millis_since_boot() - start_ts) / 1000.0; |
|
|
|
|
LOGD("%lu messages, %.2f msg/sec, %.2f KB/sec", msg_count, msg_count / seconds, bytes_count * 0.001 / seconds); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
count++; |
|
|
|
|
if (count >= 50) { |
|
|
|
|
LOGE("large volume of '%s' messages", qs.name.c_str()); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|