ソースを参照

!2 fix uos compile

chenliangyu 10 ヶ月 前
コミット
1164ae5fe3

+ 24 - 3
Framework/RvcLogSdk/baseFun.cpp

@@ -1,8 +1,11 @@
-#include "baseFun.h"
 #include <time.h>
-#include <condition_variable>
 #include <RestfulFunc.h>
 #include "json/json.h"
+#include "baseFun.h"
+#include <mutex>
+#include <condition_variable>
+std::mutex m_mutex;
+std::condition_variable condition_variable;
 
 long LOG_GET_TIME() 
 { 
@@ -60,4 +63,22 @@ int RvcLogSdkManager::SendTestLog(const char* body)
     sendErr.PreDo();
     client.Do(&sendErr, &curResult);
     return 0;
-}
+}
+
+
+
+#ifndef _WIN32
+
+
+#ifndef CLOCK_MONOTONIC_RAW
+#define CLOCK_MONOTONIC_RAW 4
+#endif
+uint32_t GetTickCount(void)
+{
+    uint32_t ticks = 0;
+    struct timespec ts;
+    if (!clock_gettime(CLOCK_MONOTONIC_RAW, &ts))
+        ticks = (ts.tv_sec * 1000) + (ts.tv_nsec / 1000000);
+    return ticks;
+}
+#endif

+ 7 - 7
Framework/RvcLogSdk/baseFun.h

@@ -2,10 +2,9 @@
 #include <windows.h>
 #endif
 #include <list>
-#include <string>
 #include "log_builder.h"
 #include <atomic>
-#include <mutex>
+
 
 #ifdef _WIN32
 DWORD WINAPI log_producer_send_thread(LPVOID param);
@@ -15,8 +14,8 @@ void * log_producer_send_thread(void * param);
 
 long LOG_GET_TIME();
 
-const std::string STR_LOG_SEND_ONE = "LOG_SEND_ONE";
-const std::string STR_LOG_SEND_DIRTY = "LOG_SEND_DIRTY";
+#define STR_LOG_SEND_ONE  "LOG_SEND_ONE"
+#define STR_LOG_SEND_DIRTY  "LOG_SEND_DIRTY"
 
 
 class RvcLogSdkManager {
@@ -33,10 +32,11 @@ public:
     int SendTestLog(const char* body);
 private:
     std::list<log_group_builder*> m_resend_frame_list;
-    std::mutex m_mutex;
-    std::condition_variable condition_variable;
 private:
     RvcLogSdkManager();
     RvcLogSdkManager(const RvcLogSdkManager&) = delete;
     RvcLogSdkManager& operator=(const RvcLogSdkManager&) = delete;
-};
+};
+#ifndef _WIN32
+uint32_t GetTickCount(void);
+#endif

+ 14 - 5
Framework/RvcLogSdk/log_builder.cpp

@@ -11,7 +11,6 @@
 #include "baseFun.h"
 #include <chrono>
 #include <ctime>
-#include <iomanip>
 
 /**
  * adjust buffer, this function will ensure tag's buffer size >= tag->now_buffer_len + new_len
@@ -222,10 +221,20 @@ int add_log(log_group_builder* bder, long start_time, uint32_t pack_index, log_i
     auto cur_now = system_clock::now();
     auto ms = duration_cast<milliseconds>(cur_now.time_since_epoch()) % 1000;
     auto timer = system_clock::to_time_t(cur_now);
+    
+    std::string ms_str = std::to_string(ms.count());
+
+    // 手动补齐毫秒到3位
+    while (ms_str.length() < 3) {
+        ms_str = "0" + ms_str; // 或者 ms_str.insert(0, "0");
+    }
+
+    char buffer[20]; // 用于存储格式化后的日期和时间
+    std::tm* local_time = std::localtime(&timer);
+    std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", local_time); // 使用 std::strftime
 
     std::ostringstream oss;
-    oss << std::put_time(std::localtime(&timer), "%Y-%m-%d %H:%M:%S")
-        << '.' << std::setfill('0') << std::setw(3) << ms.count();
+    oss << buffer << '.' << ms_str;
 
 
     if (bder->grp->n_logs >= MAX_LOG_COUNT) {
@@ -390,7 +399,7 @@ int add_log(log_group_builder* bder, long start_time, uint32_t pack_index, log_i
 
 
 
-        cJSON_AddItemToObject(united_content, "ts", cJSON_CreateString(unitedNowTime));
+        cJSON_AddItemToObject(united_content, "ts", cJSON_CreateString(oss.str().c_str()));
 
         cJSON_AddItemToObject(simpleLog_content, "content", skyeye_content);
         cJSON_AddItemToObject(united_content, "log", simpleLog_content);
@@ -708,7 +717,7 @@ void add_log_terminal_sn_other(log_group_builder* bder, char* sn, char* clientIP
                         cJSON_AddItemToObject(content, "ClientIP", cJSON_CreateString(clientIP));
                         changed = 1;
                     }
-                    if(bder->grp->logs[i].uuid == STR_LOG_SEND_DIRTY && cJSON_HasObjectItem(content, "ResultMsg"))//dirty log, need encrypt ResultMsg
+                    if(bder->grp->logs[i].uuid == std::string(STR_LOG_SEND_DIRTY) && cJSON_HasObjectItem(content, "ResultMsg"))//dirty log, need encrypt ResultMsg
                     {
                         cJSON* resultMsg = cJSON_GetObjectItem(content, "ResultMsg");
                         std::string base64_str = base64_encode(resultMsg->valuestring);

+ 0 - 12
Framework/RvcLogSdk/log_db.cpp

@@ -25,18 +25,6 @@
 
 #ifndef _WIN32
 
-#ifndef CLOCK_MONOTONIC_RAW
-#define CLOCK_MONOTONIC_RAW 4
-#endif
-
-uint32_t GetTickCount(void)
-{
-	uint32_t ticks = 0;
-    struct timespec ts;
-    if (!clock_gettime(CLOCK_MONOTONIC_RAW, &ts))
-        ticks = (ts.tv_sec * 1000) + (ts.tv_nsec / 1000000);
-	return ticks;
-}
 
 char* itoa(int value, char* buffer, int radix)
 {

+ 2 - 2
Framework/RvcLogSdk/log_multi_thread.h

@@ -330,8 +330,8 @@ static inline int sema_wait_time_(sem_t* sema, unsigned int delayMs)
 #define SEMA_WAIT_OK 0
 
 typedef pthread_t THREAD;
-#define THREAD_INIT(thread, func, param) pthread_create(&(thread), NULL, func, param)
-#define THREAD_JOIN(thread) pthread_join(thread, NULL)
+#define THREAD_INIT(thread, func, param) pthread_create((thread), NULL, func, param)
+#define THREAD_JOIN(thread) pthread_join(*(thread), NULL)
 
 #define ATOMICINT volatile long
 

+ 0 - 15
Framework/RvcLogSdk/log_persistent_manager.cpp

@@ -53,21 +53,6 @@
 
 #endif
 
-#ifndef _WIN32
-
-#ifndef CLOCK_MONOTONIC_RAW
-#define CLOCK_MONOTONIC_RAW 4
-#endif
-
-uint32_t GetTickCount(void)
-{
-    uint32_t ticks = 0;
-    struct timespec ts;
-    if (!clock_gettime(CLOCK_MONOTONIC_RAW, &ts))
-        ticks = (ts.tv_sec * 1000) + (ts.tv_nsec / 1000000);
-    return ticks;
-}
-#endif // _WIN32
 
 
 static void _copy_config_string(const char* value, sds* src_value)

+ 5 - 6
Framework/RvcLogSdk/log_producer_manager.cpp

@@ -1,8 +1,8 @@
 #include "log_producer_manager.h"
-#include "inner_log.h"
 //#include "md5.h"
 #include "sds.h"
 #include "baseFun.h"
+#include "inner_log.h"
 
 // change from 100ms to 1000s, reduce wake up when app switch to back
 #define LOG_PRODUCER_FLUSH_INTERVAL_MS 100
@@ -496,10 +496,9 @@ log_producer_manager* create_log_producer_manager(log_producer_config* producer_
             producer_manager->sender_data_queue = log_queue_create(base_queue_size * 2);
             threadId = 0;
             for (; threadId < producer_manager->producer_config->sendThreadCount; ++threadId)
-            {              
-               
-
-                THREAD_INIT(producer_manager->send_threads[threadId], log_producer_send_thread, producer_manager);
+            {
+                THREAD* cur_send = &producer_manager->send_threads[threadId];
+                THREAD_INIT(cur_send, log_producer_send_thread, producer_manager);
             }
             producer_manager->read_thread = (THREAD*)malloc(sizeof(THREAD));
             aos_debug_log((LB, "to create read thread"));
@@ -610,7 +609,7 @@ void destroy_log_producer_manager(log_producer_manager* manager)
         threadId = 0;
         for (; threadId < manager->producer_config->sendThreadCount; ++threadId)
         {
-            THREAD_JOIN(manager->send_threads[threadId]);
+            THREAD_JOIN(&(manager->send_threads[threadId]));
         }
         free(manager->send_threads);
         manager->send_threads = NULL;

+ 1 - 1
Framework/RvcLogSdk/log_producer_manager.h

@@ -24,7 +24,7 @@ typedef struct _log_producer_manager
     Clibsharequeue* share_queue;
     THREAD* send_threads;
     THREAD* read_thread;
-    THREAD flush_thread;
+    THREAD* flush_thread;
     THREAD* write_thread;
     CRITICALSECTION lock;
     COND triger_cond;

+ 2 - 2
Framework/RvcLogSdk/log_producer_sender.cpp

@@ -285,7 +285,7 @@ void * log_producer_send_fun(void * param)
                 {
                     if(STR_LOG_SEND_DIRTY != send_buf->src_logs[0].uuid)
                     {
-                        memcpy(send_buf->src_logs[0].uuid, STR_LOG_SEND_DIRTY.c_str(), STR_LOG_SEND_DIRTY.length()+1);
+                        memcpy(send_buf->src_logs[0].uuid, STR_LOG_SEND_DIRTY, strlen(STR_LOG_SEND_DIRTY)+1);
                         log_group_builder* builder = log_group_create(config);
                         strcpy(builder->modular, send_buf->modular);
                         add_log_raw2(builder, &(send_buf->src_logs[0]));
@@ -298,7 +298,7 @@ void * log_producer_send_fun(void * param)
                     //try resend, push to deque
                     for(int i = 0; i < send_buf->n_logs; i++)
                     {
-                        memcpy(send_buf->src_logs[i].uuid, STR_LOG_SEND_ONE.c_str(), STR_LOG_SEND_ONE.length()+1);
+                        memcpy(send_buf->src_logs[i].uuid, STR_LOG_SEND_DIRTY, strlen(STR_LOG_SEND_DIRTY) + 1);
                         log_group_builder* builder = log_group_create(config);
                         strcpy(builder->modular, send_buf->modular);
                         add_log_raw2(builder, &(send_buf->src_logs[i]));