diff --git a/common/cpp/include/system_wrappers/system_io.h b/common/cpp/include/system_wrappers/system_io.h index f2d3f6c5f1eb7121131f574b031d8cd9e86b635a..822102c06d7aa1ee3ccbb5372573a24e413225e2 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 ef82c5f6606fd93f6e71454eb88f52c6fdc33042..6c2d1ba25ed26bbc2a4113910d85671f3fc6a517 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 4701c984505196bcf65ec4f7eeeee62bc67bd22d..42e718cdda911a673596750345861be7ebf14cac 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 6f81abf8c98c94197ec57a7a587b8d8310dec7ee..7364db5b01a625fa5c3cc2dff0ec04c581e171a5 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 60d1bf7c9c8cf3ec6d0d38245199c8d544a1f5ad..1421d378b0ec04249924f87f6561f5ddc0c6c957 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 18159a317ca92f1ed52bba54f2b50a1166218844..528c72d4abe1dc6408571686724f85f0e3ecb501 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 7c91441059b80196f6c42812e345b41b457d6ca9..f03f1df9cb12413353df91ce0dae85fe65e46365 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; }