int GridFTPModule::close(gfal_file_handle handle) { GridFTPFileDesc* desc = static_cast<GridFTPFileDesc*>(gfal_file_handle_get_fdesc(handle)); if (desc) { gridftp_rw_commit_put(GFAL_GRIDFTP_SCOPE_CLOSE, desc); if (is_write_only(desc->open_flags)) { desc->request->wait(GFAL_GRIDFTP_SCOPE_CLOSE); } else if (is_read_only(desc->open_flags)) { if (!desc->request->done) globus_ftp_client_abort(desc->handler->get_ftp_client_handle()); try { desc->request->wait(GFAL_GRIDFTP_SCOPE_CLOSE); } catch (const Gfal::CoreException& e) { if (e.code() != ECANCELED) throw; } } gfal_file_handle_delete(handle); delete desc; } return 0; }
int gfal_http_closedir(plugin_handle plugin_data, gfal_file_handle dir_desc, GError** err) { GfalHttpInternal* davix = static_cast<GfalHttpInternal*>(plugin_data); Davix::DavixError* daverr = NULL; int ret = 0; if (davix->posix->closedir((DAVIX_DIR*)gfal_file_handle_get_fdesc(dir_desc), &daverr) != 0) { davix2gliberr(daverr, err); Davix::DavixError::clearError(&daverr); ret = -1; } gfal_file_handle_delete(dir_desc); return ret; }