Skip to content

Commit 3ec7b5c

Browse files
SocketWrapper: use static instead lambda for sock deleter
1 parent 233d9f3 commit 3ec7b5c

3 files changed

Lines changed: 17 additions & 19 deletions

File tree

libraries/SocketWrapper/SocketWrapper.h

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,18 @@ class ZephyrSocketWrapper {
2323
int ssl_sock_temp_char = -1;
2424

2525
// custom deleter for shared_ptr to close automatically the socket
26-
static auto socket_deleter() {
27-
return [](int *fd) {
28-
if (fd && *fd != -1) {
29-
::close(*fd);
30-
delete fd;
31-
}
32-
};
26+
static void socket_deleter(int *fd) {
27+
if (fd && *fd != -1) {
28+
::close(*fd);
29+
}
30+
delete fd;
3331
}
3432

3533
public:
3634
ZephyrSocketWrapper() = default;
3735

3836
ZephyrSocketWrapper(int fd)
39-
: sock_fd(std::shared_ptr<int>(fd < 0 ? nullptr : new int(fd), socket_deleter())) {
37+
: sock_fd(std::shared_ptr<int>(fd < 0 ? nullptr : new int(fd), socket_deleter)) {
4038
}
4139

4240
~ZephyrSocketWrapper() = default; // socket close managed by shared_ptr
@@ -71,8 +69,8 @@ class ZephyrSocketWrapper {
7169
}
7270

7371
raw_sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
74-
sock_fd = std::shared_ptr<int>(raw_sock_fd < 0 ? nullptr : new int(raw_sock_fd),
75-
socket_deleter());
72+
sock_fd =
73+
std::shared_ptr<int>(raw_sock_fd < 0 ? nullptr : new int(raw_sock_fd), socket_deleter);
7674
if (!sock_fd) {
7775
rv = false;
7876

@@ -105,8 +103,8 @@ class ZephyrSocketWrapper {
105103
inet_pton(AF_INET, _host, &addr.sin_addr);
106104

107105
raw_sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
108-
sock_fd = std::shared_ptr<int>(raw_sock_fd < 0 ? nullptr : new int(raw_sock_fd),
109-
socket_deleter());
106+
sock_fd =
107+
std::shared_ptr<int>(raw_sock_fd < 0 ? nullptr : new int(raw_sock_fd), socket_deleter);
110108
if (!sock_fd) {
111109
return false;
112110
}
@@ -166,8 +164,8 @@ class ZephyrSocketWrapper {
166164
}
167165

168166
raw_sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TLS_1_2);
169-
sock_fd = std::shared_ptr<int>(raw_sock_fd < 0 ? nullptr : new int(raw_sock_fd),
170-
socket_deleter());
167+
sock_fd =
168+
std::shared_ptr<int>(raw_sock_fd < 0 ? nullptr : new int(raw_sock_fd), socket_deleter);
171169
if (!sock_fd) {
172170
goto exit;
173171
}
@@ -259,8 +257,8 @@ class ZephyrSocketWrapper {
259257
addr.sin_addr.s_addr = INADDR_ANY;
260258

261259
raw_sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
262-
sock_fd = std::shared_ptr<int>(raw_sock_fd < 0 ? nullptr : new int(raw_sock_fd),
263-
socket_deleter());
260+
sock_fd =
261+
std::shared_ptr<int>(raw_sock_fd < 0 ? nullptr : new int(raw_sock_fd), socket_deleter);
264262
if (!sock_fd) {
265263
return false;
266264
}

libraries/SocketWrapper/ZephyrClient.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class ZephyrClient : public arduino::Client, ZephyrSocketWrapper {
1717

1818
protected:
1919
void setSocket(int sock) {
20-
sock_fd = std::shared_ptr<int>(sock < 0 ? nullptr : new int(sock), socket_deleter());
20+
sock_fd = std::shared_ptr<int>(sock < 0 ? nullptr : new int(sock), socket_deleter);
2121
_connected = true;
2222
}
2323

@@ -104,7 +104,7 @@ class ZephyrClient : public arduino::Client, ZephyrSocketWrapper {
104104
}
105105

106106
operator bool() {
107-
return sock_fd;
107+
return (sock_fd != nullptr);
108108
}
109109

110110
String remoteIP() {

libraries/SocketWrapper/ZephyrServer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class ZephyrServer : public arduino::Server, ZephyrSocketWrapper {
4242
}
4343

4444
explicit operator bool() {
45-
return sock_fd;
45+
return (sock_fd != nullptr);
4646
}
4747

4848
ZephyrClient accept(uint8_t *status = nullptr) {

0 commit comments

Comments
 (0)