check remote prior to mount
This commit is contained in:
@@ -121,11 +121,32 @@ mount(std::vector<const char *> args, std::string data_directory,
|
|||||||
<< " Drive" << std::endl;
|
<< " Drive" << std::endl;
|
||||||
if (prov == provider_type::remote) {
|
if (prov == provider_type::remote) {
|
||||||
try {
|
try {
|
||||||
|
constexpr const std::uint8_t retry_count{30U};
|
||||||
|
|
||||||
auto remote_cfg = config.get_remote_config();
|
auto remote_cfg = config.get_remote_config();
|
||||||
remote_cfg.host_name_or_ip = remote_host;
|
remote_cfg.host_name_or_ip = remote_host;
|
||||||
remote_cfg.api_port = remote_port;
|
remote_cfg.api_port = remote_port;
|
||||||
config.set_remote_config(remote_cfg);
|
config.set_remote_config(remote_cfg);
|
||||||
|
|
||||||
|
std::cout << "Connecting to remote [" << remote_host << ':' << remote_port
|
||||||
|
<< "] ..." << std::flush;
|
||||||
|
auto online{false};
|
||||||
|
for (std::uint8_t retry{0U}; not online && retry < retry_count; ++retry) {
|
||||||
|
online = remote_client(config).check() == 0;
|
||||||
|
if (online) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
std::cout << "." << std::flush;
|
||||||
|
std::this_thread::sleep_for(1s);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (not online) {
|
||||||
|
std::cerr << " failed! remote host is offline." << std::endl;
|
||||||
|
return exit_code::communication_error;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::cout << " done!" << std::endl;
|
||||||
|
|
||||||
remote_drive drive(
|
remote_drive drive(
|
||||||
config,
|
config,
|
||||||
[&config]() -> std::unique_ptr<remote_instance> {
|
[&config]() -> std::unique_ptr<remote_instance> {
|
||||||
|
Reference in New Issue
Block a user