MCPcopy Create free account
hub / github.com/chronoxor/CppServer / main

Function main

performance/ssl_echo_client.cpp:79–198  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77};
78
79int main(int argc, char** argv)
80{
81 auto parser = optparse::OptionParser().version("1.0.0.0");
82
83 parser.add_option("-a", "--address").dest("address").set_default("127.0.0.1").help("Server address. Default: %default");
84 parser.add_option("-p", "--port").dest("port").action("store").type("int").set_default(2222).help("Server port. Default: %default");
85 parser.add_option("-t", "--threads").dest("threads").action("store").type("int").set_default(CPU::PhysicalCores()).help("Count of working threads. Default: %default");
86 parser.add_option("-c", "--clients").dest("clients").action("store").type("int").set_default(100).help("Count of working clients. Default: %default");
87 parser.add_option("-m", "--messages").dest("messages").action("store").type("int").set_default(1000).help("Count of messages to send at the same time. Default: %default");
88 parser.add_option("-s", "--size").dest("size").action("store").type("int").set_default(32).help("Single message size. Default: %default");
89 parser.add_option("-z", "--seconds").dest("seconds").action("store").type("int").set_default(10).help("Count of seconds to benchmarking. Default: %default");
90
91 optparse::Values options = parser.parse_args(argc, argv);
92
93 // Print help
94 if (options.get("help"))
95 {
96 parser.print_help();
97 return 0;
98 }
99
100 // Client parameters
101 std::string address(options.get("address"));
102 int port = options.get("port");
103 int threads_count = options.get("threads");
104 int clients_count = options.get("clients");
105 int messages_count = options.get("messages");
106 int message_size = options.get("size");
107 int seconds_count = options.get("seconds");
108
109 std::cout << "Server address: " << address << std::endl;
110 std::cout << "Server port: " << port << std::endl;
111 std::cout << "Working threads: " << threads_count << std::endl;
112 std::cout << "Working clients: " << clients_count << std::endl;
113 std::cout << "Working messages: " << messages_count << std::endl;
114 std::cout << "Message size: " << message_size << std::endl;
115 std::cout << "Seconds to benchmarking: " << seconds_count << std::endl;
116
117 std::cout << std::endl;
118
119 // Prepare a message to send
120 message_to_send.resize(message_size, 0);
121
122 // Create a new Asio service
123 auto service = std::make_shared<Service>(threads_count);
124
125 // Start the Asio service
126 std::cout << "Asio service starting...";
127 service->Start();
128 std::cout << "Done!" << std::endl;
129
130 // Create and prepare a new SSL client context
131 auto context = std::make_shared<SSLContext>(asio::ssl::context::tlsv13);
132 context->set_default_verify_paths();
133 context->set_root_certs();
134 context->set_verify_mode(asio::ssl::verify_peer | asio::ssl::verify_fail_if_no_peer_cert);
135 context->load_verify_file("../tools/certificates/ca.pem");
136

Callers

nothing calls this directly

Calls 10

set_root_certsMethod · 0.80
emplace_backMethod · 0.80
getMethod · 0.45
resizeMethod · 0.45
StartMethod · 0.45
ConnectAsyncMethod · 0.45
IsHandshakedMethod · 0.45
DisconnectAsyncMethod · 0.45
IsConnectedMethod · 0.45
StopMethod · 0.45

Tested by

no test coverage detected