diff -r 07949ba141b7 -r e6e5780339bd src/Socket.cpp --- a/src/Socket.cpp Thu Aug 18 22:42:42 2022 +0200 +++ b/src/Socket.cpp Sat Aug 20 00:20:03 2022 +0200 @@ -154,8 +154,8 @@ MSGSocket(int socket) : socket(socket) { } - void send(const std::string& message) { - sendmsg(message); + void send(const OutgoingMessage& message) { + sendmsg(message.data); } }; @@ -177,15 +177,15 @@ return socket; } - void send(const std::string& message) override { + void send(const OutgoingMessage& message) override { auto ai = remoteAddress.ai; - sendto(socket.getFD(), message.c_str(), message.size(), 0, ai->ai_addr, ai->ai_addrlen); + sendto(socket.getFD(), message.data.c_str(), message.data.size(), 0, ai->ai_addr, ai->ai_addrlen); if (delay) usleep(delay); } - const std::string receive() override { + const IncomingMessage receive() override { // TODO: UDP receive() - return "TODO: receive() a message"; + return IncomingMessage("TODO: receive() a message"); } }; @@ -202,18 +202,18 @@ return openClientSocket(options, SOCK_STREAM, IPPROTO_TCP); } - void send(const std::string& message) override { + void send(const OutgoingMessage& message) override { auto ai = remoteAddress.ai; FD s(::socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol)); check(::connect(s.getFD(), ai->ai_addr, ai->ai_addrlen), "connect socket"); - ssize_t written = ::write(s.getFD(), message.c_str(), message.size()); - if (written != message.size()) throw std::logic_error("writing to the socket failed"); + ssize_t written = ::write(s.getFD(), message.data.c_str(), message.data.size()); + if (written != message.data.size()) throw std::logic_error("writing to the socket failed"); // TODO: partial writes, repeat } - const std::string receive() override { + const IncomingMessage receive() override { // TODO: TCP receive() - return "TODO: receive() a message"; + return IncomingMessage("TODO: receive() a message"); } }; @@ -231,9 +231,9 @@ return socket; } - const std::string receive() override { + const IncomingMessage receive() override { // TODO: SCTP receive() - return "TODO: receive() a message"; + return IncomingMessage("TODO: receive() a message"); } }; @@ -274,9 +274,9 @@ return socket; } - const std::string receive() override { + const IncomingMessage receive() override { // TODO: UDS receive() - return "TODO: receive() a message"; + return IncomingMessage("TODO: receive() a message"); } }; @@ -302,9 +302,7 @@ std::make_shared> (), std::make_shared> (), // TODO: correct class std::make_shared> (), - std::make_shared> (), std::make_shared> (), // TODO: do we need a stream-mode SCTP? - std::make_shared> (), // TODO: correct class std::make_shared> (), std::make_shared> (), // TODO: correct class std::make_shared> (), // TODO: correct class