src/Socket.cpp
branchv_0
changeset 27 e6e5780339bd
parent 26 07949ba141b7
child 28 f2697551bfd5
--- 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<TCPClientSocket>(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<TemplateSocketFactory<PROTOCOL_UDP, ROLE_CLIENT, MODE_DATAGRAM, UDPClientSocket >> (),
 	std::make_shared<TemplateSocketFactory<PROTOCOL_UDP, ROLE_SERVER, MODE_DATAGRAM, UDPClientSocket >> (), // TODO: correct class
 	std::make_shared<TemplateSocketFactory<PROTOCOL_SCTP, ROLE_CLIENT, MODE_STREAM, SCTPClientSocket >> (),
-	std::make_shared<TemplateSocketFactory<PROTOCOL_SCTP, ROLE_CLIENT, MODE_DATAGRAM, SCTPClientSocket >> (),
 	std::make_shared<TemplateSocketFactory<PROTOCOL_SCTP, ROLE_SERVER, MODE_STREAM, UDPClientSocket >> (), // TODO: do we need a stream-mode SCTP?
-	std::make_shared<TemplateSocketFactory<PROTOCOL_SCTP, ROLE_SERVER, MODE_DATAGRAM, UDPClientSocket >> (), // TODO: correct class
 	std::make_shared<TemplateSocketFactory<PROTOCOL_UDS, ROLE_CLIENT, MODE_STREAM, UDSClientSocket >> (),
 	std::make_shared<TemplateSocketFactory<PROTOCOL_UDS, ROLE_CLIENT, MODE_DATAGRAM, UDSClientSocket >> (), // TODO: correct class
 	std::make_shared<TemplateSocketFactory<PROTOCOL_UDS, ROLE_SERVER, MODE_STREAM, UDSClientSocket >> (), // TODO: correct class