Loading hermes @ e49040c5 Compare 160eafc2 to e49040c5 Original line number Diff line number Diff line Subproject commit 160eafc2de0b6744f723a0f9332eefb070fddbbc Subproject commit e49040c5cc2df53c4a89349bb3bf5ce59bcf0231 src/io/transferors/local-path-to-remote-resource.cpp +17 −9 Original line number Diff line number Diff line Loading @@ -45,8 +45,8 @@ namespace norns { namespace io { local_path_to_remote_resource_transferor::local_path_to_remote_resource_transferor( std::shared_ptr<hermes::async_engine> remote_endpoint) : m_remote_endpoint(remote_endpoint) { } std::shared_ptr<hermes::async_engine> network_endpoint) : m_network_endpoint(network_endpoint) { } bool local_path_to_remote_resource_transferor::validate( Loading Loading @@ -78,20 +78,28 @@ local_path_to_remote_resource_transferor::transfer( LOGGER_DEBUG("[{}] start_transfer: {} -> {}", task_info->id(), d_src.canonical_path(), d_dst.to_string()); hermes::endpoint endp = m_remote_endpoint->lookup(d_dst.address()); hermes::endpoint endp = m_network_endpoint->lookup(d_dst.address()); try { hermes::mapped_buffer input_data(d_src.canonical_path().string()); std::error_code ec; hermes::mapped_buffer input_data(d_src.canonical_path().string(), hermes::access_mode::read_only, &ec); if(ec) { LOGGER_ERROR("Failed mapping input data: {}", ec.value()); return ec; } std::vector<hermes::mutable_buffer> bufvec{ hermes::mutable_buffer{(void*) input_data.data(), input_data.size()} hermes::mutable_buffer{input_data.data(), input_data.size()} }; auto buffers = m_remote_endpoint->expose(bufvec, hermes::access_mode::read_only); m_network_endpoint->expose(bufvec, hermes::access_mode::read_only); norns::rpc::remote_transfer::input args( m_remote_endpoint->self_address(), m_network_endpoint->self_address(), d_src.parent()->nsid(), d_dst.parent()->nsid(), static_cast<uint32_t>(backend_type::posix_filesystem), Loading @@ -100,7 +108,7 @@ local_path_to_remote_resource_transferor::transfer( buffers); LOGGER_DEBUG("rpc::in::args{{"); LOGGER_DEBUG(" address: \"{}\",", m_remote_endpoint->self_address()); LOGGER_DEBUG(" address: \"{}\",", m_network_endpoint->self_address()); LOGGER_DEBUG(" in_nsid: \"{}\",", d_src.parent()->nsid()); LOGGER_DEBUG(" out_nsid: \"{}\",", d_dst.parent()->nsid()); LOGGER_DEBUG(" btype: {} ({}),", Loading @@ -117,7 +125,7 @@ local_path_to_remote_resource_transferor::transfer( auto start = std::chrono::steady_clock::now(); auto rpc = m_remote_endpoint->post<norns::rpc::remote_transfer>(endp, args); m_network_endpoint->post<norns::rpc::remote_transfer>(endp, args); auto resp = rpc.get(); Loading src/io/transferors/local-path-to-remote-resource.hpp +2 −2 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ namespace io { struct local_path_to_remote_resource_transferor : public transferor { local_path_to_remote_resource_transferor( std::shared_ptr<hermes::async_engine> remote_endpoint); std::shared_ptr<hermes::async_engine> network_endpoint); bool validate(const std::shared_ptr<data::resource_info>& src_info, Loading Loading @@ -88,7 +88,7 @@ private: void do_accept(hermes::request<norns::rpc::remote_transfer>&& req); std::shared_ptr<hermes::async_engine> m_remote_endpoint; std::shared_ptr<hermes::async_engine> m_network_endpoint; }; Loading src/io/transferors/remote-resource-to-local-path.cpp +13 −15 Original line number Diff line number Diff line Loading @@ -41,11 +41,13 @@ std::tuple<std::error_code, std::shared_ptr<hermes::mapped_buffer>> create_file(const bfs::path& filename, std::size_t size) { std::error_code ec; int out_fd = ::open(filename.c_str(), O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); if(out_fd == -1) { auto ec = std::make_error_code(static_cast<std::errc>(errno)); ec = std::make_error_code(static_cast<std::errc>(errno)); return std::make_tuple(ec, nullptr); } Loading @@ -54,11 +56,11 @@ create_file(const bfs::path& filename, // filesystem doesn't support fallocate(), fallback to truncate() if(errno == EOPNOTSUPP) { if(::ftruncate(out_fd, size) != 0) { auto ec = std::make_error_code(static_cast<std::errc>(errno)); ec = std::make_error_code(static_cast<std::errc>(errno)); return std::make_tuple(ec, nullptr); } } auto ec = std::make_error_code(static_cast<std::errc>(errno)); ec = std::make_error_code(static_cast<std::errc>(errno)); return std::make_tuple(ec, nullptr); } Loading @@ -68,25 +70,21 @@ retry_close: goto retry_close; } auto ec = std::make_error_code(static_cast<std::errc>(errno)); ec = std::make_error_code(static_cast<std::errc>(errno)); return std::make_tuple(ec, nullptr); } std::shared_ptr<hermes::mapped_buffer> output_data; try { output_data = auto output_data = std::make_shared<hermes::mapped_buffer>( filename.string(), hermes::access_mode::write_only); } catch(const std::exception& ex) { LOGGER_ERROR(ex.what()); filename.string(), hermes::access_mode::write_only, &ec); auto ec = std::make_error_code(static_cast<std::errc>(-1)); if(ec) { LOGGER_ERROR("Failed mapping output data: {}", ec.value()); return std::make_tuple(ec, output_data); } auto ec = std::make_error_code(static_cast<std::errc>(0)); return std::make_tuple(ec, output_data); } Loading Loading
hermes @ e49040c5 Compare 160eafc2 to e49040c5 Original line number Diff line number Diff line Subproject commit 160eafc2de0b6744f723a0f9332eefb070fddbbc Subproject commit e49040c5cc2df53c4a89349bb3bf5ce59bcf0231
src/io/transferors/local-path-to-remote-resource.cpp +17 −9 Original line number Diff line number Diff line Loading @@ -45,8 +45,8 @@ namespace norns { namespace io { local_path_to_remote_resource_transferor::local_path_to_remote_resource_transferor( std::shared_ptr<hermes::async_engine> remote_endpoint) : m_remote_endpoint(remote_endpoint) { } std::shared_ptr<hermes::async_engine> network_endpoint) : m_network_endpoint(network_endpoint) { } bool local_path_to_remote_resource_transferor::validate( Loading Loading @@ -78,20 +78,28 @@ local_path_to_remote_resource_transferor::transfer( LOGGER_DEBUG("[{}] start_transfer: {} -> {}", task_info->id(), d_src.canonical_path(), d_dst.to_string()); hermes::endpoint endp = m_remote_endpoint->lookup(d_dst.address()); hermes::endpoint endp = m_network_endpoint->lookup(d_dst.address()); try { hermes::mapped_buffer input_data(d_src.canonical_path().string()); std::error_code ec; hermes::mapped_buffer input_data(d_src.canonical_path().string(), hermes::access_mode::read_only, &ec); if(ec) { LOGGER_ERROR("Failed mapping input data: {}", ec.value()); return ec; } std::vector<hermes::mutable_buffer> bufvec{ hermes::mutable_buffer{(void*) input_data.data(), input_data.size()} hermes::mutable_buffer{input_data.data(), input_data.size()} }; auto buffers = m_remote_endpoint->expose(bufvec, hermes::access_mode::read_only); m_network_endpoint->expose(bufvec, hermes::access_mode::read_only); norns::rpc::remote_transfer::input args( m_remote_endpoint->self_address(), m_network_endpoint->self_address(), d_src.parent()->nsid(), d_dst.parent()->nsid(), static_cast<uint32_t>(backend_type::posix_filesystem), Loading @@ -100,7 +108,7 @@ local_path_to_remote_resource_transferor::transfer( buffers); LOGGER_DEBUG("rpc::in::args{{"); LOGGER_DEBUG(" address: \"{}\",", m_remote_endpoint->self_address()); LOGGER_DEBUG(" address: \"{}\",", m_network_endpoint->self_address()); LOGGER_DEBUG(" in_nsid: \"{}\",", d_src.parent()->nsid()); LOGGER_DEBUG(" out_nsid: \"{}\",", d_dst.parent()->nsid()); LOGGER_DEBUG(" btype: {} ({}),", Loading @@ -117,7 +125,7 @@ local_path_to_remote_resource_transferor::transfer( auto start = std::chrono::steady_clock::now(); auto rpc = m_remote_endpoint->post<norns::rpc::remote_transfer>(endp, args); m_network_endpoint->post<norns::rpc::remote_transfer>(endp, args); auto resp = rpc.get(); Loading
src/io/transferors/local-path-to-remote-resource.hpp +2 −2 Original line number Diff line number Diff line Loading @@ -60,7 +60,7 @@ namespace io { struct local_path_to_remote_resource_transferor : public transferor { local_path_to_remote_resource_transferor( std::shared_ptr<hermes::async_engine> remote_endpoint); std::shared_ptr<hermes::async_engine> network_endpoint); bool validate(const std::shared_ptr<data::resource_info>& src_info, Loading Loading @@ -88,7 +88,7 @@ private: void do_accept(hermes::request<norns::rpc::remote_transfer>&& req); std::shared_ptr<hermes::async_engine> m_remote_endpoint; std::shared_ptr<hermes::async_engine> m_network_endpoint; }; Loading
src/io/transferors/remote-resource-to-local-path.cpp +13 −15 Original line number Diff line number Diff line Loading @@ -41,11 +41,13 @@ std::tuple<std::error_code, std::shared_ptr<hermes::mapped_buffer>> create_file(const bfs::path& filename, std::size_t size) { std::error_code ec; int out_fd = ::open(filename.c_str(), O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR); if(out_fd == -1) { auto ec = std::make_error_code(static_cast<std::errc>(errno)); ec = std::make_error_code(static_cast<std::errc>(errno)); return std::make_tuple(ec, nullptr); } Loading @@ -54,11 +56,11 @@ create_file(const bfs::path& filename, // filesystem doesn't support fallocate(), fallback to truncate() if(errno == EOPNOTSUPP) { if(::ftruncate(out_fd, size) != 0) { auto ec = std::make_error_code(static_cast<std::errc>(errno)); ec = std::make_error_code(static_cast<std::errc>(errno)); return std::make_tuple(ec, nullptr); } } auto ec = std::make_error_code(static_cast<std::errc>(errno)); ec = std::make_error_code(static_cast<std::errc>(errno)); return std::make_tuple(ec, nullptr); } Loading @@ -68,25 +70,21 @@ retry_close: goto retry_close; } auto ec = std::make_error_code(static_cast<std::errc>(errno)); ec = std::make_error_code(static_cast<std::errc>(errno)); return std::make_tuple(ec, nullptr); } std::shared_ptr<hermes::mapped_buffer> output_data; try { output_data = auto output_data = std::make_shared<hermes::mapped_buffer>( filename.string(), hermes::access_mode::write_only); } catch(const std::exception& ex) { LOGGER_ERROR(ex.what()); filename.string(), hermes::access_mode::write_only, &ec); auto ec = std::make_error_code(static_cast<std::errc>(-1)); if(ec) { LOGGER_ERROR("Failed mapping output data: {}", ec.value()); return std::make_tuple(ec, output_data); } auto ec = std::make_error_code(static_cast<std::errc>(0)); return std::make_tuple(ec, output_data); } Loading