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