You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							37 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							37 lines
						
					
					
						
							1.2 KiB
						
					
					
				| #pragma once
 | |
| 
 | |
| #include <cassert>
 | |
| #include <memory>
 | |
| #include <string>
 | |
| 
 | |
| #include "cereal/messaging/messaging.h"
 | |
| #include "common/util.h"
 | |
| #include "system/hardware/hw.h"
 | |
| #include "system/loggerd/zstd_writer.h"
 | |
| 
 | |
| constexpr int LOG_COMPRESSION_LEVEL = 10;
 | |
| 
 | |
| typedef cereal::Sentinel::SentinelType SentinelType;
 | |
| 
 | |
| class LoggerState {
 | |
| public:
 | |
|   LoggerState(const std::string& log_root = Path::log_root());
 | |
|   ~LoggerState();
 | |
|   bool next();
 | |
|   void write(uint8_t* data, size_t size, bool in_qlog);
 | |
|   inline int segment() const { return part; }
 | |
|   inline const std::string& segmentPath() const { return segment_path; }
 | |
|   inline const std::string& routeName() const { return route_name; }
 | |
|   inline void write(kj::ArrayPtr<kj::byte> bytes, bool in_qlog) { write(bytes.begin(), bytes.size(), in_qlog); }
 | |
|   inline void setExitSignal(int signal) { exit_signal = signal; }
 | |
| 
 | |
| protected:
 | |
|   int part = -1, exit_signal = 0;
 | |
|   std::string route_path, route_name, segment_path, lock_file;
 | |
|   kj::Array<capnp::word> init_data;
 | |
|   std::unique_ptr<ZstdFileWriter> rlog, qlog;
 | |
| };
 | |
| 
 | |
| kj::Array<capnp::word> logger_build_init_data();
 | |
| std::string logger_get_identifier(std::string key);
 | |
| std::string zstd_decompress(const std::string &in);
 | |
| 
 |