From bbd91b1df86af747f65338bfe95d93ffa4aaf152 Mon Sep 17 00:00:00 2001 From: Carsten Patzke <carsten.patzke@desy.de> Date: Tue, 30 Jan 2018 10:25:52 +0100 Subject: [PATCH] compatibility issues. --- .../cpp/include/system_wrappers/system_io.h | 4 +- common/cpp/src/system_io.cpp | 103 +++++++++--------- common/cpp/src/system_io_linux.cpp | 7 ++ common/cpp/src/system_io_windows.cpp | 10 +- common/cpp/unittests/MockIO.h | 2 +- receiver/src/network_producer_peer.cpp | 2 +- .../ip_tcp_network/ip_tcp_network.cpp | 14 +-- 7 files changed, 73 insertions(+), 69 deletions(-) diff --git a/common/cpp/include/system_wrappers/system_io.h b/common/cpp/include/system_wrappers/system_io.h index f2d3f6c5f..822102c06 100644 --- a/common/cpp/include/system_wrappers/system_io.h +++ b/common/cpp/include/system_wrappers/system_io.h @@ -29,9 +29,9 @@ class SystemIO final : public IO { int _mkdir(const char* dirname) const; SocketDescriptor _socket(int address_family, int socket_type, int socket_protocol) const; - SocketDescriptor _connect(SocketDescriptor socket_fd, sockaddr* address, size_t address_length) const; + SocketDescriptor _connect(SocketDescriptor socket_fd, const void* address, size_t address_length) const; int _listen(SocketDescriptor socket_fd, int backlog) const; - SocketDescriptor _accept(SocketDescriptor socket_fd, sockaddr* address, size_t* address_length) const; + SocketDescriptor _accept(SocketDescriptor socket_fd, void* address, size_t* address_length) const; ssize_t _send(SocketDescriptor socket_fd, const void* buffer, size_t length) const; ssize_t _recv(SocketDescriptor socket_fd, void* buffer, size_t length) const; void _close_socket(SocketDescriptor socket_fd) const; diff --git a/common/cpp/src/system_io.cpp b/common/cpp/src/system_io.cpp index ef82c5f66..6c2d1ba25 100644 --- a/common/cpp/src/system_io.cpp +++ b/common/cpp/src/system_io.cpp @@ -394,62 +394,61 @@ std::unique_ptr<std::tuple<std::string, uint16_t>> SystemIO::SplitAddressToHostA } void hidra2::SystemIO::InetConnect(SocketDescriptor socket_fd, const std::string& address, IOErrors* err) const { - *err = IOErrors::kNoError; - - auto host_port_tuple = SplitAddressToHostAndPort(address); - if (!host_port_tuple) { - *err = IOErrors::kInvalidAddressFormat; - return; - } - std::string host; - uint16_t port = 0; - std::tie(host, port) = *host_port_tuple; - - short family = AddressFamilyToPosixFamily(AddressFamilies::INET); - if (family == -1) { - *err = IOErrors::kUnsupportedAddressFamily; - return; - } - - sockaddr_in socket_address{}; - socket_address.sin_addr.s_addr = inet_addr(host.c_str()); - socket_address.sin_port = htons(port); - socket_address.sin_family = family; - - if (_connect(socket_fd, (struct sockaddr*) &socket_address, sizeof(socket_address)) == -1) { - *err = GetLastError(); - return; - } + *err = IOErrors::kNoError; + + auto host_port_tuple = SplitAddressToHostAndPort(address); + if (!host_port_tuple) { + *err = IOErrors::kInvalidAddressFormat; + return; + } + std::string host; + uint16_t port = 0; + std::tie(host, port) = *host_port_tuple; + + short family = AddressFamilyToPosixFamily(AddressFamilies::INET); + if (family == -1) { + *err = IOErrors::kUnsupportedAddressFamily; + return; + } + + sockaddr_in socket_address{}; + socket_address.sin_addr.s_addr = inet_addr(host.c_str()); + socket_address.sin_port = htons(port); + socket_address.sin_family = family; + + if (_connect(socket_fd, (struct sockaddr*) &socket_address, sizeof(socket_address)) == -1) { + *err = GetLastError(); + return; + } } std::unique_ptr<std::tuple<std::string, SocketDescriptor>> SystemIO::InetAccept(SocketDescriptor socket_fd, - IOErrors* err) const { - *err = IOErrors::kNoError; - static short family = AddressFamilyToPosixFamily(AddressFamilies::INET); - if (family == -1) { - *err = IOErrors::kUnsupportedAddressFamily; - return nullptr; - } - - sockaddr_in client_address{}; - static size_t client_address_size = sizeof(sockaddr_in); - - int peer_fd = _accept(socket_fd, reinterpret_cast<sockaddr*>(&client_address), &client_address_size); - - if (peer_fd == -1) { - *err = GetLastError(); - return nullptr; - } - - std::string - address = std::string(inet_ntoa(client_address.sin_addr)) + ':' + std::to_string(client_address.sin_port); - return std::unique_ptr<std::tuple<std::string, SocketDescriptor>>(new - std::tuple<std::string, - SocketDescriptor>( - address, - peer_fd)); -} +IOErrors* err) const { + *err = IOErrors::kNoError; + static short family = AddressFamilyToPosixFamily(AddressFamilies::INET); + if (family == -1) { + *err = IOErrors::kUnsupportedAddressFamily; + return nullptr; + } + + sockaddr_in client_address{}; + static size_t client_address_size = sizeof(sockaddr_in); + int peer_fd = _accept(socket_fd, reinterpret_cast<sockaddr*>(&client_address), &client_address_size); + + if (peer_fd == -1) { + *err = GetLastError(); + return nullptr; + } + + std::string + address = std::string(inet_ntoa(client_address.sin_addr)) + ':' + std::to_string(client_address.sin_port); + return std::unique_ptr<std::tuple<std::string, SocketDescriptor>>(new + std::tuple<std::string, + SocketDescriptor>( + address, + peer_fd)); +} } diff --git a/common/cpp/src/system_io_linux.cpp b/common/cpp/src/system_io_linux.cpp index 4701c9845..42e718cdd 100644 --- a/common/cpp/src/system_io_linux.cpp +++ b/common/cpp/src/system_io_linux.cpp @@ -194,6 +194,13 @@ int SystemIO::_listen(SocketDescriptor socket_fd, int backlog) const { return ::listen(socket_fd, backlog); } +SocketDescriptor SystemIO::_connect(SocketDescriptor socket_fd, const void* address, size_t address_length) const { + return ::connect(socket_fd, static_cast<const sockaddr*>(address), static_cast<socklen_t>(address_length)); +} + +SocketDescriptor SystemIO::_accept(SocketDescriptor socket_fd, void* address, size_t* address_length) const { + return ::accept(socket_fd, static_cast<sockaddr*>(address), reinterpret_cast<socklen_t*>(address_length)); +} void SystemIO::_close_socket(SocketDescriptor socket_fd) const { ::close(socket_fd); diff --git a/common/cpp/src/system_io_windows.cpp b/common/cpp/src/system_io_windows.cpp index 6f81abf8c..7364db5b0 100644 --- a/common/cpp/src/system_io_windows.cpp +++ b/common/cpp/src/system_io_windows.cpp @@ -184,9 +184,8 @@ SocketDescriptor SystemIO::_socket(int address_family, int socket_type, int sock return ::socket(address_family, socket_type, socket_protocol); } -SocketDescriptor SystemIO::_connect(SocketDescriptor socket_fd, sockaddr * address, size_t address_length) const -{ - return ::connect(socket_fd, address, address_length); +SocketDescriptor SystemIO::_connect(SocketDescriptor socket_fd, sockaddr* address, size_t address_length) const { + return ::connect(socket_fd, address, address_length); } ssize_t SystemIO::_send(SocketDescriptor socket_fd, const void* buffer, size_t length) const { @@ -205,9 +204,8 @@ int SystemIO::_listen(SocketDescriptor fd, int backlog) const { return ::listen(fd, backlog); } -SocketDescriptor SystemIO::_accept(SocketDescriptor socket_fd, sockaddr * address, size_t * address_length) const -{ - return ::accept(socket_fd, address, (int*)address_length); +SocketDescriptor SystemIO::_accept(SocketDescriptor socket_fd, sockaddr* address, size_t* address_length) const { + return ::accept(socket_fd, address, (int*)address_length); } diff --git a/common/cpp/unittests/MockIO.h b/common/cpp/unittests/MockIO.h index 60d1bf7c9..1421d378b 100644 --- a/common/cpp/unittests/MockIO.h +++ b/common/cpp/unittests/MockIO.h @@ -44,7 +44,7 @@ class MockIO : public IO { size_t(FileDescriptor fd, void* buf, size_t length, IOErrors* err)); MOCK_CONST_METHOD4(Write, size_t(FileDescriptor fd, const void* buf, size_t length, IOErrors* err)); - MOCK_CONST_METHOD2(CreateDirectory, + MOCK_CONST_METHOD2(CreateNewDirectory, void(const std::string& directory_name, hidra2::IOErrors* err)); MOCK_CONST_METHOD3(GetDataFromFile, FileData(const std::string& fname, uint64_t fsize, IOErrors* err)); diff --git a/receiver/src/network_producer_peer.cpp b/receiver/src/network_producer_peer.cpp index 18159a317..528c72d4a 100644 --- a/receiver/src/network_producer_peer.cpp +++ b/receiver/src/network_producer_peer.cpp @@ -135,7 +135,7 @@ NetworkProducerPeer::~NetworkProducerPeer() { } FileDescriptor NetworkProducerPeer::CreateAndOpenFileByFileId(uint64_t file_id, IOErrors* err) { - io->CreateDirectory("files", err); + io->CreateNewDirectory("files", err); if(*err != IOErrors::kNoError && *err != IOErrors::kFileAlreadyExists) { return -1; } diff --git a/tests/system_io/ip_tcp_network/ip_tcp_network.cpp b/tests/system_io/ip_tcp_network/ip_tcp_network.cpp index 7c9144105..f03f1df9c 100644 --- a/tests/system_io/ip_tcp_network/ip_tcp_network.cpp +++ b/tests/system_io/ip_tcp_network/ip_tcp_network.cpp @@ -23,7 +23,7 @@ static const int kNumberOfChecks = 3; void Exit(int exit_number) { std::cerr << "ERROR: Exit on " << exit_number << std::endl; - getchar(); + getchar(); exit(exit_number); } @@ -72,7 +72,7 @@ std::thread* CreateEchoServerThread() { std::cout << "[SERVER][" << i << "] Close client_fd" << std::endl; io->CloseSocket(client_fd, &err); ExitIfErrIsNotOk(&err, 107); - } + } std::cout << "[SERVER] Close server socket" << std::endl; io->CloseSocket(socket, &err); ExitIfErrIsNotOk(&err, 108); @@ -92,7 +92,7 @@ void CheckNormal(int times, size_t size) { } for (int i = 0; i < times; i++) { - std::cout << "[CLIENT] Allocate and create random numbers" << std::endl; + std::cout << "[CLIENT] Allocate and create random numbers" << std::endl; std::unique_ptr<uint8_t[]> buffer(new uint8_t[size]); for (size_t i = 0; i < size; i++) { buffer[i] = rand(); @@ -137,11 +137,11 @@ int main(int argc, char* argv[]) { CheckNormal(10, 1024 * 1024 * 3); std::cout << "Check 2" << std::endl; CheckNormal(30, 1024); - std::cout << "Check 3" << std::endl; - CheckNormal(2, 1024 * 1024 * 256/*256 MiByte */); + std::cout << "Check 3" << std::endl; + CheckNormal(2, 1024 * 1024 * 256/*256 MiByte */); - std::cout << "server_thread->join()" << std::endl; - server_thread->join(); + std::cout << "server_thread->join()" << std::endl; + server_thread->join(); return 0; } -- GitLab