1// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5#ifndef CODETIMECHECK_H
6#define CODETIMECHECK_H
7
8#include "framework/framework_global.h"
9
10#ifndef DPF_NO_CHECK_TIME //make use
11
12#include <QMessageLogContext>
13
14// QMessageLogContext类型的上下文构造
15#define CodeCheckLogContext {__FILE__,__LINE__,__FUNCTION__,"TimeCheck"}
16// 检查点Begin的宏定义,可在任意执行代码块中使用
17#define dpfCheckTimeBegin() dpf::CodeCheckTime::begin(CodeCheckLogContext)
18// 检查点End的宏定义,可在任意执行代码块中使用
19#define dpfCheckTimeEnd() dpf::CodeCheckTime::end(CodeCheckLogContext)
20#else // define DPF_NO_CHECK_TIME
21// 检查点Begin的宏定义,可在任意执行代码块中使用
22#define dpfCheckTimeBegin()
23// 检查点End的宏定义,可在任意执行代码块中使用
24#define dpfCheckTimeEnd()
25#endif // DPF_NO_CHECK_TIME
26
27DPF_BEGIN_NAMESPACE
28/**
29 * @brief The CodeCheckTime class
30 * 代码埋点时间检查模块,可加编译参数进行屏蔽
31 * DPF_NO_CHECK_TIME (cmake -DDPF_NO_CHECK_TIME)
32 */
33class CodeCheckTime final
34{
35public:
36 explicit CodeCheckTime() = delete;
37 static void setLogCacheDayCount(uint dayCount);
38 static uint logCacheDayCount();
39 static void begin(const QMessageLogContext &context);
40 static void end(const QMessageLogContext &context);
41};
42
43DPF_END_NAMESPACE
44
45
46#endif // CODETIMECHECK_H
47