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;
|
||||
if (prov == provider_type::remote) {
|
||||
try {
|
||||
constexpr const std::uint8_t retry_count{30U};
|
||||
|
||||
auto remote_cfg = config.get_remote_config();
|
||||
remote_cfg.host_name_or_ip = remote_host;
|
||||
remote_cfg.api_port = remote_port;
|
||||
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(
|
||||
config,
|
||||
[&config]() -> std::unique_ptr<remote_instance> {
|
||||
|
Reference in New Issue
Block a user