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.
		
		
		
		
			
				
					60 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					60 lines
				
				1.3 KiB
			| 
											6 years ago
										 | #ifndef LOGGER_H
 | ||
|  | #define LOGGER_H
 | ||
|  | 
 | ||
|  | #include <stdio.h>
 | ||
|  | #include <stdint.h>
 | ||
|  | #include <pthread.h>
 | ||
|  | #include <bzlib.h>
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" {
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #define LOGGER_MAX_HANDLES 16
 | ||
|  | 
 | ||
|  | typedef struct LoggerHandle {
 | ||
|  |   pthread_mutex_t lock;
 | ||
|  |   int refcnt;
 | ||
|  |   char segment_path[4096];
 | ||
|  |   char log_path[4096];
 | ||
|  |   char lock_path[4096];
 | ||
|  |   FILE* log_file;
 | ||
|  |   BZFILE* bz_file;
 | ||
|  | 
 | ||
|  |   FILE* qlog_file;
 | ||
|  |   char qlog_path[4096];
 | ||
|  |   BZFILE* bz_qlog;
 | ||
|  | } LoggerHandle;
 | ||
|  | 
 | ||
|  | typedef struct LoggerState {
 | ||
|  |   pthread_mutex_t lock;
 | ||
|  | 
 | ||
|  |   uint8_t* init_data;
 | ||
|  |   size_t init_data_len;
 | ||
|  | 
 | ||
|  |   int part;
 | ||
|  |   char route_name[64];
 | ||
|  |   char log_name[64];
 | ||
|  |   bool has_qlog;
 | ||
|  | 
 | ||
|  |   LoggerHandle handles[LOGGER_MAX_HANDLES];
 | ||
|  |   LoggerHandle* cur_handle;
 | ||
|  | } LoggerState;
 | ||
|  | 
 | ||
|  | void logger_init(LoggerState *s, const char* log_name, const uint8_t* init_data, size_t init_data_len, bool has_qlog);
 | ||
|  | int logger_next(LoggerState *s, const char* root_path,
 | ||
|  |                             char* out_segment_path, size_t out_segment_path_len,
 | ||
|  |                             int* out_part);
 | ||
|  | LoggerHandle* logger_get_handle(LoggerState *s);
 | ||
|  | void logger_close(LoggerState *s);
 | ||
|  | void logger_log(LoggerState *s, uint8_t* data, size_t data_size, bool in_qlog);
 | ||
|  | 
 | ||
|  | void lh_log(LoggerHandle* h, uint8_t* data, size_t data_size, bool in_qlog);
 | ||
|  | void lh_close(LoggerHandle* h);
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | }
 | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif
 |