ZLMediaKit/src/Common/macros.h

103 lines
3.2 KiB
C++
Raw Normal View History

2021-01-31 20:46:55 +08:00
/*
2023-12-09 16:23:51 +08:00
* Copyright (c) 2016-present The ZLMediaKit project authors. All Rights Reserved.
2021-01-31 19:18:17 +08:00
*
2023-12-09 16:23:51 +08:00
* This file is part of ZLMediaKit(https://github.com/ZLMediaKit/ZLMediaKit).
2021-01-31 19:18:17 +08:00
*
2023-12-09 16:23:51 +08:00
* Use of this source code is governed by MIT-like license that can be found in the
2021-01-31 19:18:17 +08:00
* LICENSE file in the root of the source tree. All contributing project authors
* may be found in the AUTHORS file in the root of the source tree.
*/
#ifndef ZLMEDIAKIT_MACROS_H
#define ZLMEDIAKIT_MACROS_H
#include "Util/logger.h"
2021-10-16 16:24:40 +08:00
#include <iostream>
#include <sstream>
2021-01-31 19:18:17 +08:00
#if defined(__MACH__)
#include <arpa/inet.h>
#include <machine/endian.h>
#define __BYTE_ORDER BYTE_ORDER
#define __BIG_ENDIAN BIG_ENDIAN
#define __LITTLE_ENDIAN LITTLE_ENDIAN
2021-01-31 19:18:17 +08:00
#elif defined(__linux__)
#include <arpa/inet.h>
#include <endian.h>
2021-01-31 19:18:17 +08:00
#elif defined(_WIN32)
#define BIG_ENDIAN 1
#define LITTLE_ENDIAN 0
#define BYTE_ORDER LITTLE_ENDIAN
#define __BYTE_ORDER BYTE_ORDER
#define __BIG_ENDIAN BIG_ENDIAN
#define __LITTLE_ENDIAN LITTLE_ENDIAN
2021-01-31 19:18:17 +08:00
#endif
2021-06-28 20:29:56 +08:00
#ifndef CHECK
2022-11-12 21:59:48 +08:00
#define CHECK(exp, ...) ::mediakit::Assert_ThrowCpp(!(exp), #exp, __FUNCTION__, __FILE__, __LINE__, ##__VA_ARGS__)
#endif // CHECK
2021-06-28 20:29:56 +08:00
2024-03-22 20:36:09 +08:00
#ifndef CHECK_RET
#define CHECK_RET(...) \
try { \
CHECK(__VA_ARGS__); \
} catch (AssertFailedException & ex) { \
WarnL << ex.what(); \
return; \
}
#endif
2021-06-28 20:29:56 +08:00
#ifndef MAX
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#endif // MAX
2021-06-28 20:29:56 +08:00
#ifndef MIN
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#endif // MIN
2021-06-28 20:29:56 +08:00
#ifndef CLEAR_ARR
#define CLEAR_ARR(arr) \
for (auto &item : arr) { \
item = 0; \
}
#endif // CLEAR_ARR
2021-06-28 20:29:56 +08:00
#define RTSP_SCHEMA "rtsp"
#define RTMP_SCHEMA "rtmp"
#define TS_SCHEMA "ts"
#define FMP4_SCHEMA "fmp4"
2023-12-02 16:31:40 +08:00
#define HLS_SCHEMA "hls"
#define HLS_FMP4_SCHEMA "hls.fmp4"
2023-12-02 16:31:40 +08:00
#define VHOST_KEY "vhost"
2021-06-28 20:29:56 +08:00
#define DEFAULT_VHOST "__defaultVhost__"
#ifdef __cplusplus
extern "C" {
#endif
2021-10-16 16:24:40 +08:00
extern void Assert_Throw(int failed, const char *exp, const char *func, const char *file, int line, const char *str);
2021-06-28 20:29:56 +08:00
#ifdef __cplusplus
}
#endif
2021-01-31 19:18:17 +08:00
2021-10-16 16:24:40 +08:00
namespace mediakit {
class AssertFailedException : public std::runtime_error {
public:
template<typename ...T>
AssertFailedException(T && ...args) : std::runtime_error(std::forward<T>(args)...) {}
};
2021-10-16 16:58:03 +08:00
extern const char kServerName[];
2021-10-16 16:24:40 +08:00
template <typename... ARGS>
2021-10-16 16:24:40 +08:00
void Assert_ThrowCpp(int failed, const char *exp, const char *func, const char *file, int line, ARGS &&...args) {
if (failed) {
std::stringstream ss;
2021-11-13 00:24:38 +08:00
toolkit::LoggerWrapper::appendLog(ss, std::forward<ARGS>(args)...);
2021-10-16 16:24:40 +08:00
Assert_Throw(failed, exp, func, file, line, ss.str().data());
}
}
} // namespace mediakit
#endif // ZLMEDIAKIT_MACROS_H