diff --git a/lesson_03/main.cpp b/lesson_03/main.cpp index 370ad31..04d2d5b 100644 --- a/lesson_03/main.cpp +++ b/lesson_03/main.cpp @@ -46,7 +46,12 @@ void client(const int port, const std::string &host) int main(int argc, char *argv[]) { - ap::Hub hub({{ "port", 'p', ap::REQUIRED }, { "host", 'h', ap::REQUIRED }}); + ap::Hub hub({ + { "port", 'p', ap::REQUIRED }, + { "host", 'h', ap::OPTIONAL }, + { "server", 's', ap::NO }, + { "client", 'c', ap::NO } + }); hub.readArguments(argc, argv); auto optionPort = hub.getOption('p'); @@ -55,18 +60,36 @@ int main(int argc, char *argv[]) std::cerr << "Порт не был установлен!" << std::endl; exit(EXIT_FAILURE); } - auto optionHost = hub.getOption('h'); - if (!optionHost.isSet()) + + int port = std::stoi(optionPort.getValues()[0]); + + auto optionClient = hub.getOption('c'); + auto optionServer = hub.getOption('s'); + + if (optionClient.isSet()) { - std::cerr << "Адрес не был установлен!" << std::endl; + auto optionHost = hub.getOption('h'); + if (!optionHost.isSet()) + { + std::cerr << "Адрес не был установлен!" << std::endl; + exit(EXIT_FAILURE); + } + + std::string host = optionHost.getValues()[0]; + + client(port, host); + } + else if (optionServer.isSet()) + server(port); + else + { + std::cerr << "Необходимо установить режим запуска:" << std::endl + << "\t-c\t--client\tЗапуск в режиме клиента" << std::endl + << "\t-s\t--server\tЗапуск в режиме сервера" << std::endl + << "\t-h\t--host\t\tУказать IP-адрес сервера" << std::endl + << "\t-p\t--port\t\tУказать порт" << std::endl; exit(EXIT_FAILURE); } - int port = std::stoi(optionPort.getValues()[0]); - std::string host = optionHost.getValues()[0]; - - server(port); -// client(port, host); - return 0; }