Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
9629dbd9
Commit
9629dbd9
authored
Feb 11, 2023
by
ziyue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增mk_ini配置文件相关接口
parent
b3ba6d42
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
178 行增加
和
7 行删除
+178
-7
api/include/mk_common.h
+2
-0
api/include/mk_util.h
+85
-7
api/source/mk_common.cpp
+2
-0
api/source/mk_util.cpp
+89
-0
没有找到文件。
api/include/mk_common.h
查看文件 @
9629dbd9
...
...
@@ -117,6 +117,7 @@ API_EXPORT void API_CALL mk_set_log(int file_max_size, int file_max_count);
/**
* 设置配置项
* @deprecated 请使用mk_ini_set_option替代
* @param key 配置项名
* @param val 配置项值
*/
...
...
@@ -124,6 +125,7 @@ API_EXPORT void API_CALL mk_set_option(const char *key, const char *val);
/**
* 获取配置项的值
* @deprecated 请使用mk_ini_get_option替代
* @param key 配置项名
*/
API_EXPORT
const
char
*
API_CALL
mk_get_option
(
const
char
*
key
);
...
...
api/include/mk_util.h
查看文件 @
9629dbd9
...
...
@@ -19,15 +19,20 @@ extern "C" {
#endif
/**
* 释放mk api内部malloc的资源
*/
API_EXPORT
void
API_CALL
mk_free
(
void
*
ptr
);
/**
* 获取本程序可执行文件路径
* @return 文件路径,使用完后需要自己free
* @return 文件路径,使用完后需要自己
mk_
free
*/
API_EXPORT
char
*
API_CALL
mk_util_get_exe_path
();
/**
* 获取本程序可执行文件相同目录下文件的绝对路径
* @param relative_path 同目录下文件的路径相对,可以为null
* @return 文件路径,使用完后需要自己free
* @return 文件路径,使用完后需要自己
mk_
free
*/
API_EXPORT
char
*
API_CALL
mk_util_get_exe_dir
(
const
char
*
relative_path
);
...
...
@@ -40,7 +45,7 @@ API_EXPORT uint64_t API_CALL mk_util_get_current_millisecond();
/**
* 获取时间字符串
* @param fmt 时间格式,譬如%Y-%m-%d %H:%M:%S
* @return 时间字符串,使用完后需要自己free
* @return 时间字符串,使用完后需要自己
mk_
free
*/
API_EXPORT
char
*
API_CALL
mk_util_get_current_time_string
(
const
char
*
fmt
);
...
...
@@ -48,9 +53,82 @@ API_EXPORT char* API_CALL mk_util_get_current_time_string(const char *fmt);
* 打印二进制为字符串
* @param buf 二进制数据
* @param len 数据长度
* @return 可打印的调试信息,使用完后需要自己free
* @return 可打印的调试信息,使用完后需要自己
mk_
free
*/
API_EXPORT
char
*
API_CALL
mk_util_hex_dump
(
const
void
*
buf
,
int
len
);
///////////////////////////////////////////mk ini/////////////////////////////////////////////
typedef
void
*
mk_ini
;
/**
* 创建ini配置对象
*/
API_EXPORT
mk_ini
API_CALL
mk_ini_create
();
/**
* 返回全局默认ini配置
* @return 全局默认ini配置,请勿用mk_ini_release释放它
*/
API_EXPORT
mk_ini
API_CALL
mk_ini_default
();
/**
* 加载ini配置文件内容
* @param ini ini对象
* @param str 配置文件内容
*/
API_EXPORT
void
API_CALL
mk_ini_load_string
(
mk_ini
ini
,
const
char
*
str
);
/**
* 加载ini配置文件
* @param ini ini对象
* @param file 配置文件路径
*/
API_EXPORT
void
API_CALL
mk_ini_load_file
(
mk_ini
ini
,
const
char
*
file
);
/**
* 销毁ini配置对象
*/
API_EXPORT
void
API_CALL
mk_ini_release
(
mk_ini
ini
);
/**
* 添加或覆盖配置项
* @param ini 配置对象
* @param key 配置名,两段式,如:field.key
* @param value 配置值
*/
API_EXPORT
void
API_CALL
mk_ini_set_option
(
mk_ini
ini
,
const
char
*
key
,
const
char
*
value
);
API_EXPORT
void
API_CALL
mk_ini_set_option_int
(
mk_ini
ini
,
const
char
*
key
,
int
value
);
/**
* 获取配置项
* @param ini 配置对象
* @param key 配置名,两段式,如:field.key
* @return 配置不存在返回NULL,否则返回配置值
*/
API_EXPORT
const
char
*
API_CALL
mk_ini_get_option
(
mk_ini
ini
,
const
char
*
key
);
/**
* 删除配置项
* @param ini 配置对象
* @param key 配置名,两段式,如:field.key
* @return 1: 成功,0: 该配置不存在
*/
API_EXPORT
int
API_CALL
mk_ini_del_option
(
mk_ini
ini
,
const
char
*
key
);
/**
* 导出为配置文件内容
* @param ini 配置对象
* @return 配置文件内容字符串,用完后需要自行mk_free
*/
API_EXPORT
char
*
API_CALL
mk_ini_dump_string
(
mk_ini
ini
);
/**
* 导出配置文件到文件
* @param ini 配置对象
* @param file 配置文件路径
*/
API_EXPORT
void
API_CALL
mk_ini_dump_file
(
mk_ini
ini
,
const
char
*
file
);
///////////////////////////////////////////日志/////////////////////////////////////////////
/**
...
...
@@ -67,9 +145,9 @@ API_EXPORT void API_CALL mk_log_printf(int level, const char *file, const char *
// 以下宏可以替换printf使用
#define log_printf(lev, ...) mk_log_printf(lev, __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__)
#define log_trace(...) log_printf(0, ##__VA_ARGS__)
#define log_debug(...)
log_printf(1, ##__VA_ARGS__)
#define log_info(...)
log_printf(2, ##__VA_ARGS__)
#define log_warn(...)
log_printf(3, ##__VA_ARGS__)
#define log_debug(...) log_printf(1, ##__VA_ARGS__)
#define log_info(...) log_printf(2, ##__VA_ARGS__)
#define log_warn(...) log_printf(3, ##__VA_ARGS__)
#define log_error(...) log_printf(4, ##__VA_ARGS__)
#ifdef __cplusplus
...
...
api/source/mk_common.cpp
查看文件 @
9629dbd9
...
...
@@ -158,6 +158,8 @@ API_EXPORT void API_CALL mk_set_option(const char *key, const char *val) {
return
;
}
mINI
::
Instance
()[
key
]
=
val
;
//广播配置文件热加载
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastReloadConfig
);
}
API_EXPORT
const
char
*
API_CALL
mk_get_option
(
const
char
*
key
)
...
...
api/source/mk_util.cpp
查看文件 @
9629dbd9
...
...
@@ -13,15 +13,22 @@
#include "mk_util.h"
#include "Util/util.h"
#include "Util/mini.h"
#include "Util/logger.h"
#include "Common/config.h"
using
namespace
std
;
using
namespace
toolkit
;
using
namespace
mediakit
;
#ifndef _WIN32
#define _strdup strdup
#endif
API_EXPORT
void
API_CALL
mk_free
(
void
*
ptr
)
{
free
(
ptr
);
}
API_EXPORT
char
*
API_CALL
mk_util_get_exe_path
(){
return
_strdup
(
exePath
().
data
());
}
...
...
@@ -47,6 +54,88 @@ API_EXPORT char* API_CALL mk_util_hex_dump(const void *buf, int len){
return
_strdup
(
hexdump
(
buf
,
len
).
data
());
}
API_EXPORT
mk_ini
API_CALL
mk_ini_create
()
{
return
new
mINI
;
}
API_EXPORT
mk_ini
API_CALL
mk_ini_default
()
{
return
&
(
mINI
::
Instance
());
}
static
void
emit_ini_file_reload
(
mk_ini
ini
)
{
if
(
ini
==
mk_ini_default
())
{
// 广播配置文件热加载
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastReloadConfig
);
}
}
API_EXPORT
void
API_CALL
mk_ini_load_string
(
mk_ini
ini
,
const
char
*
str
)
{
assert
(
str
);
auto
ptr
=
(
mINI
*
)
ini
;
ptr
->
parse
(
str
);
emit_ini_file_reload
(
ini
);
}
API_EXPORT
void
API_CALL
mk_ini_load_file
(
mk_ini
ini
,
const
char
*
file
)
{
assert
(
file
);
auto
ptr
=
(
mINI
*
)
ini
;
ptr
->
parseFile
(
file
);
emit_ini_file_reload
(
ini
);
}
API_EXPORT
void
API_CALL
mk_ini_release
(
mk_ini
ini
)
{
assert
(
ini
);
delete
(
mINI
*
)
ini
;
}
API_EXPORT
void
API_CALL
mk_ini_set_option
(
mk_ini
ini
,
const
char
*
key
,
const
char
*
value
)
{
assert
(
ini
&&
key
&&
value
);
auto
ptr
=
(
mINI
*
)
ini
;
(
*
ptr
)[
key
]
=
value
;
emit_ini_file_reload
(
ini
);
}
API_EXPORT
void
API_CALL
mk_ini_set_option_int
(
mk_ini
ini
,
const
char
*
key
,
int
value
)
{
assert
(
ini
&&
key
);
auto
ptr
=
(
mINI
*
)
ini
;
(
*
ptr
)[
key
]
=
value
;
emit_ini_file_reload
(
ini
);
}
API_EXPORT
const
char
*
API_CALL
mk_ini_get_option
(
mk_ini
ini
,
const
char
*
key
)
{
assert
(
ini
&&
key
);
auto
ptr
=
(
mINI
*
)
ini
;
auto
it
=
ptr
->
find
(
key
);
if
(
it
==
ptr
->
end
())
{
return
nullptr
;
}
return
it
->
second
.
data
();
}
API_EXPORT
int
API_CALL
mk_ini_del_option
(
mk_ini
ini
,
const
char
*
key
)
{
assert
(
ini
&&
key
);
auto
ptr
=
(
mINI
*
)
ini
;
auto
it
=
ptr
->
find
(
key
);
if
(
it
==
ptr
->
end
())
{
return
false
;
}
ptr
->
erase
(
it
);
emit_ini_file_reload
(
ini
);
return
true
;
}
API_EXPORT
char
*
API_CALL
mk_ini_dump_string
(
mk_ini
ini
)
{
assert
(
ini
);
auto
ptr
=
(
mINI
*
)
ini
;
return
_strdup
(
ptr
->
dump
().
data
());
}
API_EXPORT
void
API_CALL
mk_ini_dump_file
(
mk_ini
ini
,
const
char
*
file
)
{
assert
(
ini
&&
file
);
auto
ptr
=
(
mINI
*
)
ini
;
ptr
->
dumpFile
(
file
);
}
API_EXPORT
void
API_CALL
mk_log_printf
(
int
level
,
const
char
*
file
,
const
char
*
function
,
int
line
,
const
char
*
fmt
,
...)
{
va_list
ap
;
va_start
(
ap
,
fmt
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论