void copy_remote_files_impl( ::dsn::rpc_address remote, const std::string& source_dir, const std::vector<std::string>& files, // empty for all const std::string& dest_dir, bool overwrite, dsn_task_t native_task ) { if (files.empty()) { dsn_file_copy_remote_directory(remote.c_addr(), source_dir.c_str(), dest_dir.c_str(), overwrite, native_task); } else { const char** ptr = (const char**)alloca(sizeof(const char*) * (files.size() + 1)); const char** ptr_base = ptr; for (auto& f : files) { *ptr++ = f.c_str(); } *ptr = nullptr; dsn_file_copy_remote_files( remote.c_addr(), source_dir.c_str(), ptr_base, dest_dir.c_str(), overwrite, native_task ); } }
void replication_failure_detector::on_master_connected(::dsn::rpc_address node) { bool is_primary = false; { zauto_lock l(_meta_lock); is_primary = dsn_group_is_leader(_meta_servers.group_handle(), node.c_addr()); } if (is_primary) { _stub->on_meta_server_connected(); } }