mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-06 16:56:45 +08:00
upd: adjusting error output
This commit is contained in:
parent
890492a3b9
commit
4d5939c513
@ -181,10 +181,10 @@
|
|||||||
#if defined(__cpp_exceptions) && __cpp_exceptions || \
|
#if defined(__cpp_exceptions) && __cpp_exceptions || \
|
||||||
defined(__EXCEPTIONS) || defined(_CPPUNWIND)
|
defined(__EXCEPTIONS) || defined(_CPPUNWIND)
|
||||||
# define LIBIMP_TRY try
|
# define LIBIMP_TRY try
|
||||||
# define LIBIMP_CATCH(...) catch(__VA_ARGS__)
|
# define LIBIMP_CATCH(...) catch (__VA_ARGS__)
|
||||||
# define LIBIMP_THROW(...) throw __VA_ARGS__
|
# define LIBIMP_THROW($exception, $ret) throw $exception
|
||||||
#else
|
#else
|
||||||
# define LIBIMP_TRY if (true)
|
# define LIBIMP_TRY if (true)
|
||||||
# define LIBIMP_CATCH(...) else if (false)
|
# define LIBIMP_CATCH(...) else if (false)
|
||||||
# define LIBIMP_THROW(...)
|
# define LIBIMP_THROW($exception, $ret) return $ret
|
||||||
#endif
|
#endif
|
||||||
@ -24,7 +24,7 @@ LIBIMP_NAMESPACE_BEG_
|
|||||||
* @see https://codingtidbit.com/2020/02/09/c17-codecvt_utf8-is-deprecated/
|
* @see https://codingtidbit.com/2020/02/09/c17-codecvt_utf8-is-deprecated/
|
||||||
* https://stackoverflow.com/questions/42946335/deprecated-header-codecvt-replacement
|
* https://stackoverflow.com/questions/42946335/deprecated-header-codecvt-replacement
|
||||||
* https://en.cppreference.com/w/cpp/locale/codecvt/in
|
* https://en.cppreference.com/w/cpp/locale/codecvt/in
|
||||||
*/
|
*/
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
/// @brief X-bit unicode transformation format
|
/// @brief X-bit unicode transformation format
|
||||||
|
|||||||
@ -46,7 +46,8 @@ std::string error_str(result_code code) noexcept {
|
|||||||
#if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE)
|
#if ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE)
|
||||||
LIBIMP_LOG_();
|
LIBIMP_LOG_();
|
||||||
if (::strerror_r((int)code.value(), msg_buf, sizeof(msg_buf)) != 0) {
|
if (::strerror_r((int)code.value(), msg_buf, sizeof(msg_buf)) != 0) {
|
||||||
log.error("strerror_r fails. error = {}", error_code());
|
log.error("failed: strerror_r(code = {}, buf, buf-size = {}). error = {}",
|
||||||
|
(int)code.value(), sizeof(msg_buf), error_code());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
return msg_buf;
|
return msg_buf;
|
||||||
|
|||||||
@ -36,7 +36,7 @@ std::size_t cvt_cstr(char const *src, std::size_t slen, wchar_t *des, std::size_
|
|||||||
int cch_wc = (des == nullptr) ? 0 : (int)dlen;
|
int cch_wc = (des == nullptr) ? 0 : (int)dlen;
|
||||||
int size_needed = ::MultiByteToWideChar(CP_ACP, 0, src, (int)slen, des, cch_wc);
|
int size_needed = ::MultiByteToWideChar(CP_ACP, 0, src, (int)slen, des, cch_wc);
|
||||||
if (size_needed <= 0) {
|
if (size_needed <= 0) {
|
||||||
log.error("MultiByteToWideChar fails. error = {}", sys::error_code());
|
log.error("failed: MultiByteToWideChar(CP_ACP). error = {}", sys::error_code());
|
||||||
}
|
}
|
||||||
return size_needed;
|
return size_needed;
|
||||||
}
|
}
|
||||||
@ -51,7 +51,7 @@ std::size_t cvt_cstr(wchar_t const *src, std::size_t slen, char *des, std::size_
|
|||||||
int cb_mb = (des == nullptr) ? 0 : (int)dlen;
|
int cb_mb = (des == nullptr) ? 0 : (int)dlen;
|
||||||
int size_needed = ::WideCharToMultiByte(CP_ACP, 0, src, (int)slen, des, cb_mb, NULL, NULL);
|
int size_needed = ::WideCharToMultiByte(CP_ACP, 0, src, (int)slen, des, cb_mb, NULL, NULL);
|
||||||
if (size_needed <= 0) {
|
if (size_needed <= 0) {
|
||||||
log.error("WideCharToMultiByte fails. error = {}", sys::error_code());
|
log.error("failed: WideCharToMultiByte(CP_ACP). error = {}", sys::error_code());
|
||||||
}
|
}
|
||||||
return size_needed;
|
return size_needed;
|
||||||
}
|
}
|
||||||
@ -73,7 +73,7 @@ std::size_t cvt_cstr(char8_t const *src, std::size_t slen, wchar_t *des, std::si
|
|||||||
int cch_wc = (des == nullptr) ? 0 : (int)dlen;
|
int cch_wc = (des == nullptr) ? 0 : (int)dlen;
|
||||||
int size_needed = ::MultiByteToWideChar(CP_UTF8, 0, (char *)src, (int)slen, des, cch_wc);
|
int size_needed = ::MultiByteToWideChar(CP_UTF8, 0, (char *)src, (int)slen, des, cch_wc);
|
||||||
if (size_needed <= 0) {
|
if (size_needed <= 0) {
|
||||||
log.error("MultiByteToWideChar fails. error = {}", sys::error_code());
|
log.error("failed: MultiByteToWideChar(CP_UTF8). error = {}", sys::error_code());
|
||||||
}
|
}
|
||||||
return size_needed;
|
return size_needed;
|
||||||
}
|
}
|
||||||
@ -88,7 +88,7 @@ std::size_t cvt_cstr(wchar_t const *src, std::size_t slen, char8_t *des, std::si
|
|||||||
int cb_mb = (des == nullptr) ? 0 : (int)dlen;
|
int cb_mb = (des == nullptr) ? 0 : (int)dlen;
|
||||||
int size_needed = ::WideCharToMultiByte(CP_UTF8, 0, src, (int)slen, (char *)des, cb_mb, NULL, NULL);
|
int size_needed = ::WideCharToMultiByte(CP_UTF8, 0, src, (int)slen, (char *)des, cb_mb, NULL, NULL);
|
||||||
if (size_needed <= 0) {
|
if (size_needed <= 0) {
|
||||||
log.error("WideCharToMultiByte fails. error = {}", sys::error_code());
|
log.error("failed: WideCharToMultiByte(CP_UTF8). error = {}", sys::error_code());
|
||||||
}
|
}
|
||||||
return size_needed;
|
return size_needed;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,7 +58,7 @@ std::string error_str(result_code code) noexcept {
|
|||||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||||
(LPTSTR)&lpErrText,
|
(LPTSTR)&lpErrText,
|
||||||
0, NULL) == 0) {
|
0, NULL) == 0) {
|
||||||
log.error("FormatMessage fails. error = {}", error_code());
|
log.error("failed: FormatMessage(dwMessageId = {}). error = {}", err, error_code());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
LIBIMP_UNUSED auto buf_guard = std::unique_ptr<std::remove_pointer_t<LPVOID>,
|
LIBIMP_UNUSED auto buf_guard = std::unique_ptr<std::remove_pointer_t<LPVOID>,
|
||||||
|
|||||||
@ -84,7 +84,7 @@ result_code ftruncate_fd(int fd, std::size_t size) noexcept {
|
|||||||
/// @see https://man7.org/linux/man-pages/man3/ftruncate.3p.html
|
/// @see https://man7.org/linux/man-pages/man3/ftruncate.3p.html
|
||||||
if (::ftruncate(fd, size) != posix::succ) {
|
if (::ftruncate(fd, size) != posix::succ) {
|
||||||
auto err = sys::error();
|
auto err = sys::error();
|
||||||
log.error("ftruncate({}, {}) fails. error = {}", fd, size, err);
|
log.error("failed: ftruncate({}, {}). error = {}", fd, size, err);
|
||||||
return err.code();
|
return err.code();
|
||||||
}
|
}
|
||||||
return {posix::succ};
|
return {posix::succ};
|
||||||
@ -102,7 +102,8 @@ result<shm_t> shm_open(std::string name, std::size_t size, mode::type type) noex
|
|||||||
auto fd = shm_open_fd(name, type);
|
auto fd = shm_open_fd(name, type);
|
||||||
if (!fd) return {};
|
if (!fd) return {};
|
||||||
if (*fd == posix::failed) {
|
if (*fd == posix::failed) {
|
||||||
log.error("shm_open fails. error = {}", sys::error());
|
log.error("failed: shm_open(name = {}, type = {}). error = {}",
|
||||||
|
name, type, sys::error());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
LIBIMP_UNUSED auto guard = std::unique_ptr<decltype(fd), void (*)(decltype(fd) *)> {
|
LIBIMP_UNUSED auto guard = std::unique_ptr<decltype(fd), void (*)(decltype(fd) *)> {
|
||||||
@ -113,7 +114,7 @@ result<shm_t> shm_open(std::string name, std::size_t size, mode::type type) noex
|
|||||||
/// @brief Try to get the size of this fd
|
/// @brief Try to get the size of this fd
|
||||||
struct stat st;
|
struct stat st;
|
||||||
if (::fstat(*fd, &st) == posix::failed) {
|
if (::fstat(*fd, &st) == posix::failed) {
|
||||||
log.error("fstat fails. error = {}", sys::error());
|
log.error("failed: fstat(fd = {}). error = {}", *fd, sys::error());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,7 +132,7 @@ result<shm_t> shm_open(std::string name, std::size_t size, mode::type type) noex
|
|||||||
/// @brief Creates a new mapping in the virtual address space of the calling process.
|
/// @brief Creates a new mapping in the virtual address space of the calling process.
|
||||||
void *mem = ::mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, *fd, 0);
|
void *mem = ::mmap(nullptr, size, PROT_READ | PROT_WRITE, MAP_SHARED, *fd, 0);
|
||||||
if (mem == MAP_FAILED) {
|
if (mem == MAP_FAILED) {
|
||||||
log.error("mmap fails. error = {}", sys::error());
|
log.error("failed: mmap(size = {}, fd = {}). error = {}", size, *fd, sys::error());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
return new shm_handle{std::move(name), size, mem};
|
return new shm_handle{std::move(name), size, mem};
|
||||||
@ -146,7 +147,7 @@ result_code shm_close(shm_t h) noexcept {
|
|||||||
if (shm == nullptr) return {};
|
if (shm == nullptr) return {};
|
||||||
if (::munmap(shm->memp, shm->f_sz) == posix::failed) {
|
if (::munmap(shm->memp, shm->f_sz) == posix::failed) {
|
||||||
auto err = sys::error();
|
auto err = sys::error();
|
||||||
log.error("munmap({}, {}) fails. error = {}", shm->memp, shm->f_sz, err);
|
log.error("failed: munmap({}, {}). error = {}", shm->memp, shm->f_sz, err);
|
||||||
return err.code();
|
return err.code();
|
||||||
}
|
}
|
||||||
/// @brief no unlink the file.
|
/// @brief no unlink the file.
|
||||||
|
|||||||
@ -30,11 +30,11 @@ inline LPSECURITY_ATTRIBUTES get_sa() {
|
|||||||
using namespace ::LIBIMP_;
|
using namespace ::LIBIMP_;
|
||||||
log::gripper log {"get_sa"};
|
log::gripper log {"get_sa"};
|
||||||
if (!::InitializeSecurityDescriptor(&sd_, SECURITY_DESCRIPTOR_REVISION)) {
|
if (!::InitializeSecurityDescriptor(&sd_, SECURITY_DESCRIPTOR_REVISION)) {
|
||||||
log.error("InitializeSecurityDescriptor fails. error = {}", sys::error());
|
log.error("failed: InitializeSecurityDescriptor(SECURITY_DESCRIPTOR_REVISION). error = {}", sys::error());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!::SetSecurityDescriptorDacl(&sd_, TRUE, NULL, FALSE)) {
|
if (!::SetSecurityDescriptorDacl(&sd_, TRUE, NULL, FALSE)) {
|
||||||
log.error("SetSecurityDescriptorDacl fails. error = {}", sys::error());
|
log.error("failed: SetSecurityDescriptorDacl. error = {}", sys::error());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
sa_.nLength = sizeof(SECURITY_ATTRIBUTES);
|
sa_.nLength = sizeof(SECURITY_ATTRIBUTES);
|
||||||
|
|||||||
@ -41,7 +41,7 @@ result_code mmap_close(HANDLE h) {
|
|||||||
}
|
}
|
||||||
if (!::CloseHandle(h)) {
|
if (!::CloseHandle(h)) {
|
||||||
auto err = sys::error();
|
auto err = sys::error();
|
||||||
log.error("CloseHandle({}) fails. error = {}", h, err);
|
log.error("failed: CloseHandle({}). error = {}", h, err);
|
||||||
return err.code();
|
return err.code();
|
||||||
}
|
}
|
||||||
return {ERROR_SUCCESS};
|
return {ERROR_SUCCESS};
|
||||||
@ -77,7 +77,7 @@ result<HANDLE> mmap_open(std::string const &file, std::size_t size, mode::type t
|
|||||||
HANDLE h = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, t_name.c_str());
|
HANDLE h = ::OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, t_name.c_str());
|
||||||
if (h == NULL) {
|
if (h == NULL) {
|
||||||
auto err = sys::error();
|
auto err = sys::error();
|
||||||
log.error("OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, {}) fails. error = {}", file, err);
|
log.error("failed: OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, {}). error = {}", file, err);
|
||||||
return {nullptr, err.value()};
|
return {nullptr, err.value()};
|
||||||
}
|
}
|
||||||
return h;
|
return h;
|
||||||
@ -90,7 +90,7 @@ result<HANDLE> mmap_open(std::string const &file, std::size_t size, mode::type t
|
|||||||
0, static_cast<DWORD>(size), t_name.c_str());
|
0, static_cast<DWORD>(size), t_name.c_str());
|
||||||
if (h == NULL) {
|
if (h == NULL) {
|
||||||
auto err = sys::error();
|
auto err = sys::error();
|
||||||
log.error("CreateFileMapping(PAGE_READWRITE | SEC_COMMIT, {}, {}) fails. error = {}", size, file, err);
|
log.error("failed: CreateFileMapping(PAGE_READWRITE | SEC_COMMIT, {}, {}). error = {}", size, file, err);
|
||||||
return {nullptr, err.value()};
|
return {nullptr, err.value()};
|
||||||
}
|
}
|
||||||
return h;
|
return h;
|
||||||
@ -132,7 +132,7 @@ result<LPVOID> mmap_memof(HANDLE h) {
|
|||||||
LPVOID mem = ::MapViewOfFile(h, FILE_MAP_ALL_ACCESS, 0, 0, 0);
|
LPVOID mem = ::MapViewOfFile(h, FILE_MAP_ALL_ACCESS, 0, 0, 0);
|
||||||
if (mem == NULL) {
|
if (mem == NULL) {
|
||||||
auto err = sys::error();
|
auto err = sys::error();
|
||||||
log.error("MapViewOfFile({}, FILE_MAP_ALL_ACCESS) fails. error = {}", h, err);
|
log.error("failed: MapViewOfFile({}, FILE_MAP_ALL_ACCESS). error = {}", h, err);
|
||||||
return {nullptr, err.value()};
|
return {nullptr, err.value()};
|
||||||
}
|
}
|
||||||
return mem;
|
return mem;
|
||||||
@ -151,7 +151,7 @@ result<SIZE_T> mmap_sizeof(LPCVOID mem) {
|
|||||||
MEMORY_BASIC_INFORMATION mem_info {};
|
MEMORY_BASIC_INFORMATION mem_info {};
|
||||||
if (::VirtualQuery(mem, &mem_info, sizeof(mem_info)) == 0) {
|
if (::VirtualQuery(mem, &mem_info, sizeof(mem_info)) == 0) {
|
||||||
auto err = sys::error();
|
auto err = sys::error();
|
||||||
log.error("VirtualQuery({}) fails. error = {}", mem, err);
|
log.error("failed: VirtualQuery({}). error = {}", mem, err);
|
||||||
return {false, (SIZE_T)err.value()};
|
return {false, (SIZE_T)err.value()};
|
||||||
}
|
}
|
||||||
return mem_info.RegionSize;
|
return mem_info.RegionSize;
|
||||||
@ -172,7 +172,7 @@ result_code mmap_release(HANDLE h, LPCVOID mem) {
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
if (!::UnmapViewOfFile(mem)) {
|
if (!::UnmapViewOfFile(mem)) {
|
||||||
log.warning("UnmapViewOfFile fails. error = {}", sys::error());
|
log.warning("failed: UnmapViewOfFile. error = {}", sys::error());
|
||||||
}
|
}
|
||||||
return mmap_close(h);
|
return mmap_close(h);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,18 +21,18 @@ result<shm_t> shm_open(std::string name, std::size_t size, mode::type type) noex
|
|||||||
LIBIMP_LOG_();
|
LIBIMP_LOG_();
|
||||||
auto h = mmap_open(name, size, type);
|
auto h = mmap_open(name, size, type);
|
||||||
if (h == NULL) {
|
if (h == NULL) {
|
||||||
log.error("mmap_open failed.");
|
log.error("failed: mmap_open(name = {}, size = {}, type = {}).", name, size, type);
|
||||||
return {nullptr, h.code_value()};
|
return {nullptr, h.code_value()};
|
||||||
}
|
}
|
||||||
auto mem = mmap_memof(*h);
|
auto mem = mmap_memof(*h);
|
||||||
if (*mem == NULL) {
|
if (*mem == NULL) {
|
||||||
log.error("mmap_memof failed.");
|
log.error("failed: mmap_memof({}).", *h);
|
||||||
mmap_close(*h);
|
mmap_close(*h);
|
||||||
return {nullptr, mem.code_value()};
|
return {nullptr, mem.code_value()};
|
||||||
}
|
}
|
||||||
auto sz = mmap_sizeof(*mem);
|
auto sz = mmap_sizeof(*mem);
|
||||||
if (!sz) {
|
if (!sz) {
|
||||||
log.error("mmap_sizeof failed.");
|
log.error("failed: mmap_sizeof({}).", *mem);
|
||||||
mmap_close(*h);
|
mmap_close(*h);
|
||||||
return {nullptr, static_cast<result_type>(sz.value())};
|
return {nullptr, static_cast<result_type>(sz.value())};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,7 +66,7 @@ void *new_delete_resource::allocate(std::size_t bytes, std::size_t alignment) no
|
|||||||
void *p = nullptr;
|
void *p = nullptr;
|
||||||
int ret = ::posix_memalign(&p, alignment, bytes);
|
int ret = ::posix_memalign(&p, alignment, bytes);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
log.error("posix_memalign(alignment = {}, bytes = {}) fails. error = {}",
|
log.error("failed: posix_memalign(alignment = {}, bytes = {}). error = {}",
|
||||||
alignment, bytes, sys::error(ret));
|
alignment, bytes, sys::error(ret));
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user