mirror of
https://github.com/mutouyun/cpp-ipc.git
synced 2025-12-06 16:56:45 +08:00
upd: [ipc] optimizes the return value of shm_close
This commit is contained in:
parent
746ee51584
commit
f657fd1c7e
@ -17,6 +17,7 @@ LIBIMP_NAMESPACE_BEG_
|
||||
|
||||
using error_code_t = std::uint64_t;
|
||||
constexpr error_code_t error_number_limit = error_code_t(-1);
|
||||
constexpr error_code_t no_error = 0;
|
||||
|
||||
/**
|
||||
* \brief Serves as the base class for specific error category types.
|
||||
|
||||
@ -21,11 +21,15 @@ using shm_t = shm_handle *;
|
||||
|
||||
/// \brief Create a new shared memory handle with a name of the shared memory file.
|
||||
LIBIMP_EXPORT ::LIBIMP::result<shm_t> shm_open(std::string name,
|
||||
std::size_t size = 0,
|
||||
mode::type = mode::create | mode::open) noexcept;
|
||||
std::size_t size = 0,
|
||||
mode::type = mode::create | mode::open) noexcept;
|
||||
|
||||
/// \brief Close the shared memory handle.
|
||||
LIBIMP_EXPORT ::LIBIMP::result_code shm_close(shm_t) noexcept;
|
||||
LIBIMP_EXPORT ::LIBIMP::result<void> shm_close(shm_t) noexcept;
|
||||
|
||||
/// \brief Gets the name of the shared memory file based on the shared memory handle.
|
||||
/// \return empty string on failure.
|
||||
LIBIMP_EXPORT std::string shm_name(shm_t) noexcept;
|
||||
|
||||
/// \brief Gets a memory pointer based on the shared memory handle.
|
||||
/// \return nullptr on failure.
|
||||
@ -39,10 +43,6 @@ LIBIMP_EXPORT std::size_t shm_size(shm_t) noexcept;
|
||||
/// \remark [TBD]
|
||||
LIBIMP_EXPORT ::LIBIMP::result_code shm_size(shm_t, std::size_t) noexcept;
|
||||
|
||||
/// \brief Gets the name of the shared memory file based on the shared memory handle.
|
||||
/// \return empty string on failure.
|
||||
LIBIMP_EXPORT std::string shm_name(shm_t) noexcept;
|
||||
|
||||
/**
|
||||
* \brief The shared memory object.
|
||||
*/
|
||||
|
||||
@ -150,7 +150,7 @@ result<shm_t> shm_open(std::string name, std::size_t size, mode::type type) noex
|
||||
/**
|
||||
* \see https://man7.org/linux/man-pages/man2/mmap.2.html
|
||||
*/
|
||||
result_code shm_close(shm_t h) noexcept {
|
||||
result<void> shm_close(shm_t h) noexcept {
|
||||
LIBIMP_LOG_();
|
||||
auto shm = valid(h);
|
||||
if (shm == nullptr) return {};
|
||||
@ -161,7 +161,7 @@ result_code shm_close(shm_t h) noexcept {
|
||||
}
|
||||
/// \brief no unlink the file.
|
||||
delete shm;
|
||||
return posix::succ;
|
||||
return no_error;
|
||||
}
|
||||
|
||||
LIBIPC_NAMESPACE_END_
|
||||
|
||||
@ -33,7 +33,7 @@ namespace {
|
||||
* \brief Closes an open object handle.
|
||||
* \see https://docs.microsoft.com/en-us/windows/win32/api/handleapi/nf-handleapi-closehandle
|
||||
*/
|
||||
result_code mmap_close(HANDLE h) {
|
||||
result<void> mmap_close(HANDLE h) {
|
||||
LIBIMP_LOG_();
|
||||
if (h == NULL) {
|
||||
log.error("handle is null.");
|
||||
@ -44,7 +44,7 @@ result_code mmap_close(HANDLE h) {
|
||||
log.error("failed: CloseHandle(", h, "). error = ", err);
|
||||
return err;
|
||||
}
|
||||
return ERROR_SUCCESS;
|
||||
return no_error;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -161,7 +161,7 @@ result<SIZE_T> mmap_sizeof(LPCVOID mem) {
|
||||
* \brief Unmaps a mapped view of a file from the calling process's address space.
|
||||
* \see https://docs.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-unmapviewoffile
|
||||
*/
|
||||
result_code mmap_release(HANDLE h, LPCVOID mem) {
|
||||
result<void> mmap_release(HANDLE h, LPCVOID mem) {
|
||||
LIBIMP_LOG_();
|
||||
if (h == NULL) {
|
||||
log.error("handle is null.");
|
||||
|
||||
@ -39,7 +39,7 @@ result<shm_t> shm_open(std::string name, std::size_t size, mode::type type) noex
|
||||
return new shm_handle{std::move(name), *sz, *mem, *h};
|
||||
}
|
||||
|
||||
result_code shm_close(shm_t h) noexcept {
|
||||
result<void> shm_close(shm_t h) noexcept {
|
||||
LIBIMP_LOG_();
|
||||
if (h == nullptr) {
|
||||
log.error("shm handle is null.");
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
#include "libipc/shm.h"
|
||||
|
||||
TEST(shm, create_close) {
|
||||
TEST(shm, open_close) {
|
||||
EXPECT_FALSE(ipc::shm_open("hello-ipc-shm", 1024, ipc::mode::none));
|
||||
|
||||
auto shm1 = ipc::shm_open("hello-ipc-shm", 1024, ipc::mode::create | ipc::mode::open);
|
||||
@ -77,7 +77,6 @@ TEST(shm, shared_memory) {
|
||||
}
|
||||
|
||||
#include <libimp/detect_plat.h>
|
||||
|
||||
#if defined(LIBIMP_OS_LINUX)
|
||||
#include <sys/socket.h>
|
||||
#include <sys/un.h>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user