70int main(
int argc,
char* argv[])
72#if defined(WIN32) && defined(_DEBUG) && defined(LEAK_CHECK)
73 resip::FindMemoryLeaks fml;
78 Data defaultConfigFilename(
"turnloadgenclient.config");
81 config.
parseConfig(argc, argv, defaultConfigFilename);
85 std::cerr <<
"Error parsing configuration: " << ex << std::endl;
94 Data turnAddress = config.
getConfigData(
"TurnServerIPAddress", localAddress,
true);
95 unsigned int turnPort = config.
getConfigInt(
"TurnServerPort", 3478);
97 unsigned int echoServerPort = config.
getConfigInt(
"RelayPort", 2000);
99 InfoLog(<<
"Using: " << localAddress <<
" --" << turnProtocol <<
"--> " << turnAddress <<
":" << turnPort);
107 int bufferSize = config.
getConfigInt(
"PayloadSizeBytes", 172);
108 if (bufferSize > 1400)
110 WarningLog(<<
"Max PlayloadSizeBytes=" << bufferSize <<
" exceeds max of 1400, using 1400 instead.");
113 char* buffer =
new char[bufferSize];
120 asio::io_context ioService;
122 int numClientsToSimulate = config.
getConfigInt(
"NumClientsToSimulate", 1);
123 std::list<TurnLoadGenAsyncSocketHandler*> mClients;
124 for (
int clientNum = 1; clientNum <= numClientsToSimulate; clientNum++)
128 std::shared_ptr<TurnAsyncSocket> turnSocket;
131 asio::ssl::context sslContext(asio::ssl::context::tls_client);
133 sslContext.set_verify_mode(asio::ssl::context::verify_peer);
134 sslContext.load_verify_file(config.
getConfigData(
"TLSRootCertFile",
"ca.pem",
true).
c_str());
138 turnSocket = std::make_shared<TurnAsyncTlsSocket>(ioService, sslContext,
false,
client, asio::ip::make_address(localAddress.
c_str()), 0);
144 turnSocket = std::make_shared<TurnAsyncTcpSocket>(ioService,
client, asio::ip::make_address(localAddress.
c_str()), 0);
148 turnSocket = std::make_shared<TurnAsyncUdpSocket>(ioService,
client, asio::ip::make_address(localAddress.
c_str()), 0);
152 if (username.
size() > 0 && password.
size() > 0)
154 turnSocket->setUsernameAndPassword(username.
c_str(), password.
c_str());
157 client->setTurnAsyncSocket(turnSocket);
159 mClients.push_back(
client);
165 udpEchoServer.
join();
167 catch (
const std::exception& e)
169 std::cerr <<
"Exception: " << e.what() <<
"\n";
static void initialize(Type type, Level level, const Data &appName, const char *logFileName=0, ExternalLogger *externalLogger=0, const Data &syslogFacility="LOG_DAEMON", MessageStructure messageStructure=Unstructured, const Data &instanceName="")