OSDN Git Service

[Qt][LOGGER] CSP_Logger makes daughter of QObject.Add messaging slot entry.
authorK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 27 Jun 2018 12:55:53 +0000 (21:55 +0900)
committerK.Ohta <whatisthis.sowhat@gmail.com>
Wed, 27 Jun 2018 12:55:53 +0000 (21:55 +0900)
[STATE][Qt] csp_state_utils:: use QObject's messaging system for logging.

source/src/common.h
source/src/qt/gui/csp_logger.cpp
source/src/qt/gui/csp_logger.h
source/src/statesub.cpp
source/src/statesub.h

index 2a4063c..16341d6 100644 (file)
@@ -23,7 +23,7 @@
                #endif
        #endif
 #endif
-#ifdef _USE_OT
+#ifdef _USE_QT
                        #define USE_ZLIB
 #endif
 
index 2dae1f7..0ad212a 100644 (file)
@@ -5,7 +5,7 @@
  *  Dec 30, 2014 Move from XM7/SDL, this was Ohta's original code.
  * Licence : GPLv2
  */
-
+#include <QObject>
 #include <QMutex>
 #include <QMutexLocker>
 
 #include "menu_flags.h"
 #include "../osd.h"
 
-CSP_Logger::CSP_Logger(bool b_syslog, bool cons, const char *devname)
+CSP_Logger::CSP_Logger(QObject *parent, bool b_syslog, bool cons, const char *devname) : QObject(parent)
 {
        lock_mutex = new QMutex(QMutex::Recursive);
        this->reset();
        this->open(b_syslog, cons, devname);
+       level_state_out_record = false;
+       level_state_out_syslog = false;
+       level_state_out_console = false;
 }
 
 
@@ -125,9 +128,6 @@ void CSP_Logger::reset(void)
                        level_dev_out_console[i][j] = true;
                }
        }
-       level_state_out_record = false;
-       level_state_out_syslog = false;
-       level_state_out_console = false;
 }
 
 //extern class USING_FLAGS *using_flags;
@@ -208,6 +208,11 @@ void CSP_Logger::debug_log(int level, int domain_num, const char *fmt, ...)
        va_end(ap);
 }
 
+void CSP_Logger::do_debug_log(int level, int domain_num, QString mes)
+{
+       debug_log(level, domain_num, (char *)mes.toUtf8().constData());
+}
+
 void CSP_Logger::debug_log(int level, int domain_num, char *strbuf)
 {
        struct tm *timedat;
@@ -231,7 +236,7 @@ void CSP_Logger::debug_log(int level, int domain_num, char *strbuf)
        } else {
           level_flag |= LOG_DEBUG;
        }
-#endif 
+#endif
        char *p;
        char *p_bak;
        const char delim[2] = "\n";
index 01a89fc..4dd1c9a 100644 (file)
@@ -187,7 +187,7 @@ private:
 protected:
 
 public:
-       CSP_Logger(bool b_syslog, bool cons, const char *devname);
+       CSP_Logger(QObject *parent, bool b_syslog, bool cons, const char *devname);
        ~CSP_Logger();
        void set_osd(OSD *p) { p_osd = p; }
        void open(bool b_syslog, bool cons, const char *devname);
@@ -216,6 +216,8 @@ public:
        int64_t write_log(const _TCHAR *name, const char *domain_name = NULL, bool utf8 = true, bool forget = false);
        int64_t copy_log(char *buffer, int64_t buf_size, int64_t *lines = NULL, char *domainname = NULL, bool utf8 = true, bool forget = false, int64_t start = 0, int64_t start_size = 0, int64_t *end_line = 0);
        void *get_raw_data(bool forget = false, int64_t start = 0, int64_t *end_line = NULL);
+public slots:
+       void do_debug_log(int level, int domain_num, QString mes);
 };
 QT_END_NAMESPACE
 
index d7fc957..29175fe 100644 (file)
@@ -910,8 +910,16 @@ bool csp_state_data_saver::post_proc_loading(uint32_t *sumseed, bool *__stat)
        return mb;
 }
 
+#include "config.h"
+#include "csp_logger.h"
+#if defined(_USE_QT)
+#include <QObject>
+#include <QString>
 
+csp_state_utils::csp_state_utils(int _version, int device_id, const _TCHAR *classname, CSP_Logger* p_logger) : QObject(NULL)
+#else
 csp_state_utils::csp_state_utils(int _version, int device_id, const _TCHAR *classname, CSP_Logger* p_logger)
+#endif
 {
        listptr.clear();
        crc_value = 0;
@@ -950,6 +958,9 @@ csp_state_utils::csp_state_utils(int _version, int device_id, const _TCHAR *clas
        add_entry(_T("INTERNAL_VER"), &internal_version_bak);   
 
        fio = NULL;
+#if defined(_USE_QT)
+       if(p_logger != NULL) connect(this, SIGNAL(sig_debug_log(int, int, QString)), p_logger, SLOT(do_debug_log(int, int, QString)), Qt::QueuedConnection);
+#endif
 }
 
 csp_state_utils::~csp_state_utils()
@@ -961,20 +972,21 @@ csp_state_utils::~csp_state_utils()
  * With MinGW and DLL linker, not able top find extern symbols.
  */
 
-#include "config.h"
-#include "csp_logger.h"
 
 void csp_state_utils::out_debug_log(const char *fmt, ...)
 {
-       if(logger == NULL) return;
        // Temporally disabled 20180618
 //#if !defined(__MINGW32__) && !defined(__MINGW64__)
        char strbuf[8192];
        va_list ap;
        va_start(ap, fmt);      
        vsnprintf(strbuf, 8192, fmt, ap);
-       logger->debug_log(CSP_LOG_DEBUG, CSP_LOG_TYPE_VM_STATE, strbuf);
-       //printf("%s\n", strbuf);
+#if defined(_USE_QT)
+       QString mes = QString::fromUtf8(strbuf);
+       emit sig_debug_log(CSP_LOG_DEBUG, CSP_LOG_TYPE_VM_STATE, mes);
+#else
+       /* PUT MESSAGE HANDLER HERE */
+#endif
        va_end(ap);
 //#endif
 }
index a4c6590..e8b1923 100644 (file)
 #define _CSP_STATE_SUB_H
 #include "common.h"
 #include "fileio.h"
-
+#include "fifo.h"
 
 #include <string>
 #include <list>
 #include <typeindex>
 #include <map>
 #include "state_data.h"
-
-enum {
+#if defined(_USE_QT)
+#include <QObject>
+#include <QString>
+#endif
+typedef enum csp_saver_type_t {
        csp_saver_entry_int = 0,
        csp_saver_entry_uint8,
        csp_saver_entry_int8,
@@ -72,7 +75,16 @@ enum {
 
 
 class CSP_Logger;
+
+#if defined(_USE_QT)
+  QT_BEGIN_NAMESPACE
+class DLL_PREFIX csp_state_utils : public QObject {
+#else
 class DLL_PREFIX csp_state_utils {
+#endif
+#if defined(_USE_QT)
+       Q_OBJECT
+#endif
 protected:
        typedef union  {
                int64_t s;
@@ -135,7 +147,7 @@ protected:
                { typeid(bool), csp_saver_entry_bool },
                { typeid(void), csp_saver_entry_void },
                { typeid(FIFO), csp_saver_entry_fifo },
-               { typeid(cur_time_t), csp_saver_entry_cur_time_t },
+               { typeid(cur_time_t), csp_saver_entry_cur_time_t }
        };
 public:
        csp_state_utils(int _version = 1, int device_id = 1, const _TCHAR *classname = NULL, CSP_Logger* p_logger = NULL);
@@ -338,8 +350,14 @@ public:
        void get_class_name(_TCHAR *buf, int len);
        bool save_state(FILEIO *__fio, uint32_t *pcrc = NULL);
        bool load_state(FILEIO *__fio, uint32_t *pcrc = NULL);
+#if defined(_USE_QT)
+signals:
+       int sig_debug_log(int, int, QString);
+#endif
 };
-       
+#if defined(_USE_QT)
+    QT_END_NAMESPACE
+#endif
                        
 #define DECL_STATE_ENTRY0(_n_name, __list) {                             \
                __list->add_entry((const _TCHAR *)_T(#_n_name), &_n_name);                \