This commit is contained in:
Erik Frojdh
2019-04-25 13:55:45 +02:00
parent 77d34d5b6e
commit 4da85b15a0
5 changed files with 70 additions and 202 deletions

View File

@ -18,7 +18,7 @@ class DataSocket {
int getSocketId() const {
return socketId_;
}
size_t sendData(void *buffer, size_t size);
size_t sendData(const void *buffer, size_t size);
size_t receiveData(void *buffer, size_t size);
int setTimeOut(int t_seconds);
void close();

View File

@ -40,7 +40,6 @@ DataSocket &DataSocket::operator=(DataSocket &&move) noexcept {
}
size_t DataSocket::receiveData(void *buffer, size_t size) {
// std::cout << "Sending\n";
size_t dataRead = 0;
while (dataRead < size) {
dataRead +=
@ -50,12 +49,11 @@ size_t DataSocket::receiveData(void *buffer, size_t size) {
return dataRead;
}
size_t DataSocket::sendData(void *buffer, size_t size) {
// std::cout << "Receiving\n";
size_t DataSocket::sendData(const void *buffer, size_t size) {
size_t dataSent = 0;
while (dataSent < size) {
dataSent +=
write(getSocketId(), reinterpret_cast<char *>(buffer) + dataSent,
write(getSocketId(), reinterpret_cast<const char *>(buffer) + dataSent,
size - dataSent);
}
return dataSent;

View File

@ -5,31 +5,41 @@
#include <iostream>
#include <chrono>
int server() {
std::vector<char> server() {
std::cout << "starting server\n";
auto server = sls::ServerSocket(1950);
auto s = server.accept();
std::vector<char> buffer(100, '\0');
s.receiveData(buffer.data(), buffer.size());
std::cout << "ServerReceived: " << std::string(buffer.begin(), buffer.end())
<< '\n';
std::string message(100, '\0');
message[0] = 'O';
message[1] = 'K';
s.sendData(&message.front(), message.size());
std::vector<char> to_send(100, '\0');
to_send[0] = 'O';
to_send[1] = 'K';
s.sendData(to_send.data(), to_send.size());
s.close();
return 0;
return buffer;
}
TEST_CASE("something", "[support][socket]") {
TEST_CASE("The server recive the same message as we send", "[support]") {
std::vector<char> received_message(100, '\0');
std::vector<char> sent_message(100, '\0');
const char m[]{"some message"};
std::copy(std::begin(m), std::end(m), sent_message.data());
auto s = std::async(std::launch::async, server);
std::this_thread::sleep_for(std::chrono::seconds(1));
auto client = sls::DetectorSocket("localhost", 1950);
std::cout << "client\n";
std::vector<char> buffer(100, '\0');
client.sendData(buffer.data(), buffer.size());
client.receiveData(buffer.data(), buffer.size());
s.get();
client.sendData(sent_message.data(), sent_message.size());
client.receiveData(received_message.data(), received_message.size());
client.close();
auto server_message = s.get();
CHECK(server_message == sent_message);
CHECK(std::string(received_message.data()) == "OK" );
CHECK(client.getSocketId() == -1);
}
TEST_CASE("throws on no server", "[support]"){
CHECK_THROWS(sls::DetectorSocket("localhost", 1950));
}