#ifndef LOG_SDK_LOG_PRODUCER_MANAGER_H #define LOG_SDK_LOG_PRODUCER_MANAGER_H #include "log_define.h" #include "log_producer_config.h" #include "log_producer_sender.h" #include "log_persistent_manager.h" #include "log_builder.h" #include "log_queue.h" #include "libsharequeue.h" #include "log_multi_thread.h" typedef struct _log_producer_manager { log_producer_config* producer_config; volatile uint32_t shutdown; volatile uint32_t networkRecover; volatile uint32_t totalBufferSize; volatile long start_time; volatile uint32_t pack_index; log_queue* loggroup_queue; log_queue* sender_data_queue; Clibsharequeue* share_queue; THREAD* send_threads; THREAD* read_thread; THREAD* flush_thread; THREAD* write_thread; CRITICALSECTION lock; COND triger_cond; log_group_builder* builder; on_log_producer_send_done_function send_done_function; void* user_param; log_producer_send_param** send_param_queue; uint64_t send_param_queue_size; volatile uint64_t send_param_queue_read; volatile uint64_t send_param_queue_write; ATOMICINT multi_thread_send_count; log_persistent_manager* persistent_manager; // used for disk saver on_log_producer_send_done_uuid_function uuid_send_done_function; void* uuid_user_param; }log_producer_manager; extern log_producer_manager* create_log_producer_manager(log_producer_config* producer_config); extern void destroy_log_producer_manager(log_producer_manager* manager); extern log_producer_result log_producer_manager_add_log(log_producer_manager* producer_manager, log_item* log, int flush, long record_time); extern log_producer_result log_producer_manager_add_beidou_log(log_producer_manager* producer_manager, beidou_log_item* log, int flush); extern log_producer_result log_producer_manager_add_log_raw(log_producer_manager* producer_manager, build_item* log, int flush); extern log_producer_result log_producer_manager_add_log_group(log_producer_manager* producer_manager, log_group_builder* builder, int flush); #endif