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