diff --git a/apps/EchoClient.cpp b/apps/EchoClient.cpp index 606f031b3901e06b8921161cb9968b2692a944ba..18bcbf764d79651d0b4561da1a5e2b6f27178233 100644 --- a/apps/EchoClient.cpp +++ b/apps/EchoClient.cpp @@ -1,5 +1,6 @@ // SPDX-License-Identifier: LGPL-3.0-or-later // Copyright © 2021 Florian Fischer +#include <arpa/inet.h> #include <fcntl.h> #include <netdb.h> //for getaddrinfo #include <netinet/in.h> @@ -9,6 +10,7 @@ #include <unistd.h> #include <algorithm> // for find +#include <array> #include <atomic> #include <cerrno> // for errno, ECANCELED #include <chrono> // for nanoseconds, duration, durat... @@ -364,7 +366,7 @@ auto Client::startNew(Semaphore& readySem, Semaphore& startSem, CPS& cps) -> boo return true; } -auto getOption(int argc, char** argv, const std::string& option) -> char* { +static auto getOption(int argc, char** argv, const std::string& option) -> char* { char** end = argv + argc; char** itr = std::find(argv, end, option); @@ -388,6 +390,36 @@ static void printUsage(char* name) { << std::endl; } +static void printIp(struct sockaddr* addr) { + std::array<char, INET6_ADDRSTRLEN> serverAddrString; + void* serverAddr; + switch (addr->sa_family) { + case AF_INET: + serverAddr = &(((struct sockaddr_in*)addr)->sin_addr); + break; + case AF_INET6: + serverAddr = &(((struct sockaddr_in6*)addr)->sin6_addr); + break; + default: + DIE_MSG("uknown sa_family " << addr->sa_family); + } + inet_ntop(addr->sa_family, serverAddr, serverAddrString.data(), INET6_ADDRSTRLEN); + std::cout << "echo client connecting to " << serverAddrString.data() << ":" << port << std::endl; +} + +static void printSettings() { + std::cout << "parameters: {termination="; + if (execution_seconds) { + std::cout << execution_seconds << "seconds"; + } else { + std::cout << iterations << "iterations"; + } + std::cout << ",clients=" << nclients; + std::cout << ",size=" << size; + std::cout << ",sendquit= " << (sendQuit ? "true" : "false"); + std::cout << "}" << std::endl; +} + auto main(int argc, char* argv[]) -> int { if (existsOption(argc, argv, "-h")) { printUsage(argv[0]); @@ -481,6 +513,9 @@ auto main(int argc, char* argv[]) -> int { } } + printIp(server->ai_addr); + printSettings(); + Runtime runtime; Fiber* alphaFiber = Fiber::from([&] { @@ -501,7 +536,7 @@ auto main(int argc, char* argv[]) -> int { } } - // await the clients + // await the connection of all clients for (size_t i = 0; i < nclients; ++i) { readySemaphore.acquire(); }