21 template<
class Link>
inline int
23 return base_t::main<link_t>(
27 [](
boost::program_options::variables_map
const &vm) {
28 using conn_pol_t=
typename link_t::exchg_link_t::conn_pol_t;
29 using ref_data_t=
typename link_t::client_link_t::proc_rules_t::ref_data;
30 using exchange_msg_details_t=
typename link_t::exchg_link_t::exchange_msg_details_t;
32 std::string
const MIC_code=[]() {
33 std::ostringstream ss;
34 common::mic_codes::to_stream<exchange_msg_details_t::MIC_code>(ss);
37 std::ifstream ref_data_src(vm[(MIC_code+
"_ref_data").c_str()].as<std::string>().c_str());
38 std::shared_ptr<ref_data_t> ref_data(
std::make_shared<ref_data_t>(ref_data_src));
40 const std::string user(vm[(MIC_code+
"_username").c_str()].as<std::string>());
41 typename exchange_msg_details_t::UserName_t user_conv{};
42 std::memcpy(user_conv.data(), user.data(), std::min(user_conv.size(), user.size()));
43 const std::string pass(vm[(MIC_code+
"_password").c_str()].as<std::string>());
44 typename exchange_msg_details_t::Password_t pass_conv{};
45 std::memcpy(pass_conv.data(), pass.data(), std::min(pass_conv.size(), pass.size()));
46 const std::string new_pass(vm[(MIC_code+
"_new_password").c_str()].as<std::string>());
47 typename exchange_msg_details_t::Password_t new_pass_conv{};
48 std::memcpy(new_pass_conv.data(), new_pass.data(), std::min(new_pass_conv.size(), new_pass.size()));
49 const std::string reason(vm[(MIC_code+
"_logout_reason").c_str()].as<std::string>());
51 std::memcpy(reason_conv.data(), reason.data(), std::min(reason_conv.size(), reason.size()));
52 return std::make_tuple(
53 typename link_t::client_link_t::ctor_args{
54 boost::asio::ip::address_v4::from_string(vm[
"client_address"].as<std::string>()),
55 vm[
"client_port"].as<
unsigned short>(),
56 typename link_t::client_link_t::proc_rules_t(*ref_data)
59 typename conn_pol_t::gateways_t(
60 std::make_pair(boost::asio::ip::address_v4::from_string(vm[(MIC_code+
"_primary_gateway_address").c_str()].as<std::string>()), vm[(MIC_code+
"_primary_gateway_port").c_str()].as<
unsigned short>()),
61 std::make_pair(boost::asio::ip::address_v4::from_string(vm[(MIC_code+
"_secondary_gateway_address").c_str()].as<std::string>()), vm[(MIC_code+
"_secondary_gateway_port").c_str()].as<
unsigned short>())
63 typename conn_pol_t::logon_args_t{
68 MIT::common::logoff_args_t{
72 typename link_t::exchg_to_client_proc_rules_t(*ref_data),