mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-07 01:06:45 +08:00
upd: [imp] improve interface of system
This commit is contained in:
parent
94cae29b42
commit
375c25bd1e
@ -61,7 +61,7 @@ public:
|
|||||||
enum class info : std::int32_t {
|
enum class info : std::int32_t {
|
||||||
page_size,
|
page_size,
|
||||||
};
|
};
|
||||||
LIBIMP_EXPORT std::int64_t conf(info) noexcept;
|
LIBIMP_EXPORT result<std::int64_t> conf(info) noexcept;
|
||||||
|
|
||||||
} // namespace sys
|
} // namespace sys
|
||||||
LIBIMP_NAMESPACE_END_
|
LIBIMP_NAMESPACE_END_
|
||||||
|
|||||||
@ -14,13 +14,17 @@
|
|||||||
LIBIMP_NAMESPACE_BEG_
|
LIBIMP_NAMESPACE_BEG_
|
||||||
namespace sys {
|
namespace sys {
|
||||||
|
|
||||||
|
#ifndef ENOERR
|
||||||
|
#define ENOERR (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the system error code
|
* @brief Get the system error code
|
||||||
* https://man7.org/linux/man-pages/man3/errno.3.html
|
* https://man7.org/linux/man-pages/man3/errno.3.html
|
||||||
*/
|
*/
|
||||||
result_code error_code() noexcept {
|
result_code error_code() noexcept {
|
||||||
auto err = errno;
|
auto err = errno;
|
||||||
if (err == 0) return {true};
|
if (err == ENOERR) return {ENOERR};
|
||||||
return {false, std::uint64_t(err)};
|
return {false, std::uint64_t(err)};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,7 +33,7 @@ result_code error_code() noexcept {
|
|||||||
* https://man7.org/linux/man-pages/man3/errno.3.html
|
* https://man7.org/linux/man-pages/man3/errno.3.html
|
||||||
*/
|
*/
|
||||||
void error_code(result_code code) noexcept {
|
void error_code(result_code code) noexcept {
|
||||||
errno = code ? 0 : (int)code.value();
|
errno = code ? ENOERR : (int)code.value();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -56,7 +60,7 @@ std::string error_str(result_code code) noexcept {
|
|||||||
* https://man7.org/linux/man-pages/man2/getpagesize.2.html
|
* https://man7.org/linux/man-pages/man2/getpagesize.2.html
|
||||||
* https://man7.org/linux/man-pages/man3/sysconf.3.html
|
* https://man7.org/linux/man-pages/man3/sysconf.3.html
|
||||||
*/
|
*/
|
||||||
std::int64_t conf(info r) noexcept {
|
result<std::int64_t> conf(info r) noexcept {
|
||||||
LIBIMP_LOG_();
|
LIBIMP_LOG_();
|
||||||
switch (r) {
|
switch (r) {
|
||||||
case info::page_size: {
|
case info::page_size: {
|
||||||
@ -66,10 +70,11 @@ std::int64_t conf(info r) noexcept {
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
log.error("invalid info = {}", enum_cast(r));
|
log.error("invalid info = {}", enum_cast(r));
|
||||||
return -1;
|
return {};
|
||||||
}
|
}
|
||||||
log.error("info = {}, error = {}", enum_cast(r), error_msg(error_code()));
|
auto err = sys::error();
|
||||||
return -1;
|
log.error("info = {}, error = {}", enum_cast(r), err);
|
||||||
|
return {false, (int)err.value()};
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace sys
|
} // namespace sys
|
||||||
|
|||||||
@ -67,5 +67,7 @@ TEST(system, error_str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(system, conf) {
|
TEST(system, conf) {
|
||||||
EXPECT_EQ(imp::sys::conf(imp::sys::info::page_size), 4096);
|
auto ret = imp::sys::conf(imp::sys::info::page_size);
|
||||||
|
EXPECT_TRUE(ret);
|
||||||
|
EXPECT_EQ(ret.value(), 4096);
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user