-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mark error branches unlikely (cpp20) (#53)
* mark error branches unlikely (cpp20) * simplify unique_ptr free callback * set build target to rustc target * also update toolchain.cmake for test and example * Bump version
- Loading branch information
1 parent
a000a6d
commit 3d1453d
Showing
9 changed files
with
70 additions
and
92 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#define CHECK_RET(ret, err) \ | ||
if (0 != ret) [[unlikely]] { \ | ||
const std::string err_str(err); \ | ||
free(err); \ | ||
throw std::runtime_error(err_str); \ | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,54 +1,39 @@ | ||
#include "socket_manager/msg_sender.h" | ||
#include <stdexcept> | ||
#include "error.h" | ||
|
||
namespace socket_manager { | ||
|
||
void MsgSender::send_block(std::string_view data) { | ||
char *err = nullptr; | ||
if (0 != socket_manager_msg_sender_send_block(inner.get(), data.data(), | ||
data.length(), &err)) { | ||
const std::string err_str(err); | ||
free(err); | ||
throw std::runtime_error(err_str); | ||
} | ||
int ret = socket_manager_msg_sender_send_block(inner.get(), data.data(), | ||
data.length(), &err); | ||
CHECK_RET(ret, err); | ||
} | ||
|
||
void MsgSender::send_nonblock(std::string_view data) { | ||
char *err = nullptr; | ||
if (0 != socket_manager_msg_sender_send_nonblock(inner.get(), data.data(), | ||
data.length(), &err)) { | ||
const std::string err_str(err); | ||
free(err); | ||
throw std::runtime_error(err_str); | ||
} | ||
int ret = socket_manager_msg_sender_send_nonblock(inner.get(), data.data(), | ||
data.length(), &err); | ||
CHECK_RET(ret, err); | ||
} | ||
|
||
long MsgSender::send_async(std::string_view data) { | ||
char *err = nullptr; | ||
long const bytes_sent = socket_manager_msg_sender_send_async( | ||
const long bytes_sent = socket_manager_msg_sender_send_async( | ||
inner.get(), data.data(), data.length(), | ||
SOCKET_MANAGER_C_API_Notifier{conn->notifier.get()}, &err); | ||
if (err != nullptr) { | ||
const std::string err_str(err); | ||
free(err); | ||
throw std::runtime_error(err_str); | ||
} | ||
CHECK_RET(err, err); | ||
return bytes_sent; | ||
} | ||
|
||
void MsgSender::flush() { | ||
char *err = nullptr; | ||
if (0 != socket_manager_msg_sender_flush(inner.get(), &err)) { | ||
const std::string err_str(err); | ||
free(err); | ||
throw std::runtime_error(err_str); | ||
} | ||
int ret = socket_manager_msg_sender_flush(inner.get(), &err); | ||
CHECK_RET(ret, err); | ||
} | ||
|
||
MsgSender::MsgSender(SOCKET_MANAGER_C_API_MsgSender *inner, | ||
const std::shared_ptr<Connection> &conn) | ||
: conn(conn), inner(inner, [](SOCKET_MANAGER_C_API_MsgSender *ptr) { | ||
socket_manager_msg_sender_free(ptr); | ||
}) {} | ||
: conn(conn), inner(inner, socket_manager_msg_sender_free) {} | ||
|
||
} // namespace socket_manager |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters