mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 10:40:05 +08:00
CHECK宏支持自定义错误提示
This commit is contained in:
parent
11eb04f094
commit
b10fc52384
@ -21,12 +21,12 @@
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
extern void Assert_Throw(int failed, const char *exp, const char *func, const char *file, int line);
|
||||
extern void Assert_Throw(int failed, const char *exp, const char *func, const char *file, int line, const char *str);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#define assert(exp) Assert_Throw(!(exp), #exp, __FUNCTION__, __FILE__, __LINE__)
|
||||
#define assert(exp) Assert_Throw(!(exp), #exp, __FUNCTION__, __FILE__, __LINE__, NULL)
|
||||
#else
|
||||
#define assert(e) ((void)0)
|
||||
#endif//NDEBUG
|
||||
|
@ -307,22 +307,10 @@ const string kMediaTimeoutMS = "media_timeout_ms";
|
||||
const string kBeatIntervalMS = "beat_interval_ms";
|
||||
const string kMaxAnalysisMS = "max_analysis_ms";
|
||||
const string kBenchmarkMode = "benchmark_mode";
|
||||
|
||||
}
|
||||
|
||||
} // namespace mediakit
|
||||
|
||||
extern "C" {
|
||||
void Assert_Throw(int failed, const char *exp, const char *func, const char *file, int line) {
|
||||
if (failed) {
|
||||
_StrPrinter printer;
|
||||
printer << "Assertion failed: (" << exp << "), function " << func << ", file " << file << ", line " << line
|
||||
<< ".";
|
||||
throw std::runtime_error(printer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_MEM_DEBUG
|
||||
|
||||
static atomic<uint64_t> mem_usage(0);
|
||||
|
@ -9,11 +9,32 @@
|
||||
*/
|
||||
|
||||
#include "macros.h"
|
||||
#include "Util/util.h"
|
||||
|
||||
using namespace toolkit;
|
||||
|
||||
#if defined(ENABLE_VERSION)
|
||||
#include "Version.h"
|
||||
#endif
|
||||
|
||||
extern "C" {
|
||||
void Assert_Throw(int failed, const char *exp, const char *func, const char *file, int line, const char *str) {
|
||||
if (failed) {
|
||||
_StrPrinter printer;
|
||||
printer << "Assertion failed: (" << exp ;
|
||||
if(str && *str){
|
||||
printer << ", " << str;
|
||||
}
|
||||
printer << "), function " << func << ", file " << file << ", line " << line << ".";
|
||||
throw std::runtime_error(printer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace mediakit {
|
||||
|
||||
void printArgs(std::ostream &out) {}
|
||||
|
||||
//请遵循MIT协议,勿修改服务器声明
|
||||
#if !defined(ENABLE_VERSION)
|
||||
const char SERVER_NAME[] = "ZLMediaKit-6.0(build in " __DATE__ " " __TIME__ ")";
|
||||
@ -21,3 +42,4 @@ const char SERVER_NAME[] = "ZLMediaKit-6.0(build in " __DATE__ " " __TIME__ ")"
|
||||
const char SERVER_NAME[] = "ZLMediaKit(git hash:" COMMIT_HASH ",branch:" BRANCH_NAME ",build time:" __DATE__ " " __TIME__ ")";
|
||||
#endif
|
||||
|
||||
}//namespace mediakit
|
@ -11,6 +11,8 @@
|
||||
#ifndef ZLMEDIAKIT_MACROS_H
|
||||
#define ZLMEDIAKIT_MACROS_H
|
||||
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#if defined(__MACH__)
|
||||
#include <arpa/inet.h>
|
||||
#include <machine/endian.h>
|
||||
@ -38,7 +40,7 @@
|
||||
#endif
|
||||
|
||||
#ifndef CHECK
|
||||
#define CHECK(exp) Assert_Throw(!(exp), #exp, __FUNCTION__, __FILE__, __LINE__)
|
||||
#define CHECK(exp,...) mediakit::Assert_ThrowCpp(!(exp), #exp, __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__)
|
||||
#endif//CHECK
|
||||
|
||||
#ifndef MAX
|
||||
@ -62,14 +64,39 @@
|
||||
#define FMP4_SCHEMA "fmp4"
|
||||
#define DEFAULT_VHOST "__defaultVhost__"
|
||||
|
||||
extern const char SERVER_NAME[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
extern void Assert_Throw(int failed, const char *exp, const char *func, const char *file, int line);
|
||||
extern void Assert_Throw(int failed, const char *exp, const char *func, const char *file, int line, const char *str);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace mediakit {
|
||||
|
||||
extern const char SERVER_NAME[];
|
||||
|
||||
void printArgs(std::ostream &out);
|
||||
|
||||
template<typename First>
|
||||
void printArgs(std::ostream &out, First &&first) {
|
||||
out << std::forward<First>(first);
|
||||
}
|
||||
|
||||
template<typename First, typename ...ARGS>
|
||||
void printArgs(std::ostream &out, First &&first, ARGS &&...args) {
|
||||
out << std::forward<First>(first);
|
||||
printArgs(out, std::forward<ARGS>(args)...);
|
||||
}
|
||||
|
||||
template<typename ...ARGS>
|
||||
void Assert_ThrowCpp(int failed, const char *exp, const char *func, const char *file, int line, ARGS &&...args) {
|
||||
if (failed) {
|
||||
std::stringstream ss;
|
||||
printArgs(ss, std::forward<ARGS>(args)...);
|
||||
Assert_Throw(failed, exp, func, file, line, ss.str().data());
|
||||
}
|
||||
}
|
||||
|
||||
}//namespace mediakit
|
||||
#endif //ZLMEDIAKIT_MACROS_H
|
||||
|
Loading…
Reference in New Issue
Block a user