Statlog in C (#23596)
* statlog in C
* fix swaglog and the test
* add missing files
* fix context initialization todo
* speed up test
old-commit-hash: 6366d1303f
vw-mqb-aeb
parent
9f202e63f5
commit
c69bba9c9c
8 changed files with 138 additions and 75 deletions
@ -0,0 +1,43 @@ |
||||
#ifndef _GNU_SOURCE |
||||
#define _GNU_SOURCE |
||||
#endif |
||||
|
||||
#include "selfdrive/common/statlog.h" |
||||
#include "selfdrive/common/util.h" |
||||
|
||||
#include <stdio.h> |
||||
#include <mutex> |
||||
#include <zmq.h> |
||||
|
||||
class StatlogState : public LogState { |
||||
public: |
||||
StatlogState() : LogState("ipc:///tmp/stats") {} |
||||
}; |
||||
|
||||
static StatlogState s = {}; |
||||
|
||||
static void log(const char* metric_type, const char* metric, const char* fmt, ...) { |
||||
char* value_buf = nullptr; |
||||
va_list args; |
||||
va_start(args, fmt); |
||||
int ret = vasprintf(&value_buf, fmt, args); |
||||
va_end(args); |
||||
|
||||
if (ret > 0 && value_buf) { |
||||
char* line_buf = nullptr; |
||||
ret = asprintf(&line_buf, "%s:%s|%s", metric, value_buf, metric_type); |
||||
if (ret > 0 && line_buf) { |
||||
zmq_send(s.sock, line_buf, ret, ZMQ_NOBLOCK); |
||||
free(line_buf); |
||||
} |
||||
free(value_buf); |
||||
} |
||||
} |
||||
|
||||
void statlog_log(const char* metric_type, const char* metric, int value) { |
||||
log(metric_type, metric, "%d", value); |
||||
} |
||||
|
||||
void statlog_log(const char* metric_type, const char* metric, float value) { |
||||
log(metric_type, metric, "%f", value); |
||||
} |
@ -0,0 +1,10 @@ |
||||
#pragma once |
||||
|
||||
#define STATLOG_GAUGE "g" |
||||
#define STATLOG_SAMPLE "sa" |
||||
|
||||
void statlog_log(const char* metric_type, const char* metric, int value); |
||||
void statlog_log(const char* metric_type, const char* metric, float value); |
||||
|
||||
#define statlog_gauge(metric, value) statlog_log(STATLOG_GAUGE, metric, value) |
||||
#define statlog_sample(metric, value) statlog_log(STATLOG_SAMPLE, metric, value) |
Loading…
Reference in new issue