.TH "globus_gass_cache" 3 "Wed Feb 27 2019" "Version 10.1" "globus_gass_cache" \" -*- nroff -*- .ad l .nh .SH NAME globus_gass_cache \- Globus GASS Cache\&. .SH SYNOPSIS .br .PP .SS "Macros" .in +1c .ti -1c .RI "#define \fBGLOBUS_GASS_CACHE_MODULE\fP (&globus_i_gass_cache_module)" .br .RI "module_descriptor " .in -1c .SS "Typedefs" .in +1c .ti -1c .RI "typedef struct globus_i_gass_cache_t * \fBglobus_gass_cache_t\fP" .br .RI "GASS Cache Handle\&. " .in -1c .SS "Functions" .in +1c .ti -1c .RI "int \fBglobus_gass_cache_open\fP (const char *cache_directory_path, \fBglobus_gass_cache_t\fP *cache_handlep)" .br .RI "Open a GASS Cache\&. " .ti -1c .RI "int \fBglobus_gass_cache_close\fP (\fBglobus_gass_cache_t\fP *cache_handlep)" .br .RI "Close a cache handle\&. " .ti -1c .RI "int \fBglobus_gass_cache_add\fP (\fBglobus_gass_cache_t\fP cache_handle, const char *url, const char *tag, globus_bool_t create, unsigned long *timestamp, char **local_filename)" .br .RI "Add a tag to an URL in the cache\&. " .ti -1c .RI "int \fBglobus_gass_cache_add_done\fP (\fBglobus_gass_cache_t\fP cache_handle, const char *url, const char *tag, unsigned long timestamp)" .br .RI "Complete adding a cache entry and unlock it\&. " .ti -1c .RI "int \fBglobus_gass_cache_query\fP (\fBglobus_gass_cache_t\fP cache_handle, const char *url, const char *tag, globus_bool_t wait_for_lock, unsigned long *timestamp, char **local_filename, globus_bool_t *is_locked)" .br .RI "Query the GASS Cache\&. " .ti -1c .RI "int \fBglobus_gass_cache_delete_start\fP (\fBglobus_gass_cache_t\fP cache_handle, const char *url, const char *tag, unsigned long *timestamp)" .br .RI "Remove a cache tag\&. " .ti -1c .RI "int \fBglobus_gass_cache_delete\fP (\fBglobus_gass_cache_t\fP cache_handle, const char *url, const char *tag, unsigned long timestamp, globus_bool_t is_locked)" .br .RI "Remove one instance of the tag from the cache entry's tag list\&. " .ti -1c .RI "int \fBglobus_gass_cache_cleanup_tag\fP (\fBglobus_gass_cache_t\fP cache_handle, const char *url, const char *tag)" .br .RI "Remove a tag from a cache entry\&. " .ti -1c .RI "int \fBglobus_gass_cache_cleanup_tag_all\fP (\fBglobus_gass_cache_t\fP cache_handle, char *tag)" .br .RI "Remove a tag from all cache entries .PP Remove all instances of the tag from the cache entry's tag list\&. If there are no more tags in the tag list, then remove this cache entry and delete the associated local cache file\&. If the cache entry is locked with the same tag as is passed to this function, then the entry is unlocked after removing the tags\&. Otherwise, the cache entry's lock is left untouched\&. " .ti -1c .RI "int \fBglobus_gass_cache_mangle_url\fP (const \fBglobus_gass_cache_t\fP cache_handle, const char *url, char **mangled_url, int *length)" .br .RI "Convert a URL to a string suitable as a file path\&. " .ti -1c .RI "int \fBglobus_gass_cache_mangle_tag\fP (const \fBglobus_gass_cache_t\fP cache_handle, const char *tag, char **mangled_tag, int *length)" .br .RI "Convert a tag to a string suitable as a file path\&. " .ti -1c .RI "int \fBglobus_gass_cache_get_cache_dir\fP (const \fBglobus_gass_cache_t\fP cache_handle, char **cache_dir)" .br .RI "Get the GASS Cache's root directory\&. " .ti -1c .RI "int \fBglobus_gass_cache_get_dirs\fP (const \fBglobus_gass_cache_t\fP cache_handle, const char *url, const char *tag, char **global_root, char **local_root, char **tmp_root, char **log_root, char **global_dir, char **local_dir)" .br .RI "Get the set of directories used by a GASS Cache\&. " .ti -1c .RI "int \fBglobus_gass_cache_get_cache_type_string\fP (const \fBglobus_gass_cache_t\fP cache_handle, char **cache_type)" .br .RI "Get the type of GASS Cache directory layout\&. " .ti -1c .RI "const char * \fBglobus_gass_cache_error_string\fP (int error_code)" .br .RI "Look up the error string corresponding to a GASS Cache error\&. " .in -1c .SH "Detailed Description" .PP Globus GASS Cache\&. The GASS cache management API is part of the Globus module called 'GASS', (Global Access to Secondary Storage) The GASS cache management API defines calls for manipulating a local file cache\&. .PP Each cache entry can be locked during addition and deletion to allow for atomic handling of the cache file contents\&. .PP Each cache entry also has an associated timestamp\&. This timestamp is independent of the local cache file's modification time\&. Rather, the cache entry timestamp is maintained by the user\&. It can, for example, be used to keep track of the timestamp of a remote file that is associated with the cache entry\&. .PP Note: all timestamps are as seconds since the epoch\&. (01 Jan 1970, 00:00 GMT) .PP The following functions are part of the API: .PP .IP "\(bu" 2 \fBglobus_gass_cache_open()\fP .IP "\(bu" 2 \fBglobus_gass_cache_close()\fP .IP "\(bu" 2 \fBglobus_gass_cache_add()\fP .IP "\(bu" 2 \fBglobus_gass_cache_add_done()\fP .IP "\(bu" 2 \fBglobus_gass_cache_delete_start()\fP .IP "\(bu" 2 \fBglobus_gass_cache_delete()\fP .IP "\(bu" 2 \fBglobus_gass_cache_cleanup_tag()\fP .IP "\(bu" 2 \fBglobus_gass_cache_cleanup_tag_all()\fP .IP "\(bu" 2 \fBglobus_gass_cache_mangle_url()\fP .IP "\(bu" 2 \fBglobus_gass_cache_mangle_tag()\fP .IP "\(bu" 2 \fBglobus_gass_cache_get_dirs()\fP .IP "\(bu" 2 \fBglobus_gass_cache_get_cache_dir()\fP .PP .SH "Typedef Documentation" .PP .SS "typedef struct globus_i_gass_cache_t* \fBglobus_gass_cache_t\fP" .PP GASS Cache Handle\&. Data structure used to store information concerning an open cache directory\&. This structure MUST NOT be modified directly, but passed to the globus_gass_cache functions .SH "Function Documentation" .PP .SS "int globus_gass_cache_add (\fBglobus_gass_cache_t\fP cache_handle, const char * url, const char * tag, globus_bool_t create, unsigned long * timestamp, char ** local_filename)" .PP Add a tag to an URL in the cache\&. Create a new cache file or add a tag on it\&. .PP If the URL is already in the cache but is locked, then this call will block until the cache entry is unlocked, then will proceed with the subsequent operations\&. .PP If the URL is already in the cache and unlocked, then add the tag to the cache entry's tag list, return the local cache filename in *local_filename, return the entry's current timestamp in *timestamp, lock the cache entry, and return GLOBUS_GASS_CACHE_ADD_EXISTS\&. .PP If the URL is not in the cache, and create==GLOBUS_TRUE, then create a new unique empty local cache file, add it to the cache with the specified tag, return the filename in *local_filename, return *timestamp set to GLOBUS_GASS_CACHE_TIMESTAMP_UNKNOWN, lock the cache entry, and return GLOBUS_GASS_CACHE_ADD_NEW\&. .PP If the URL is not in the cache, and create==GLOBUS_FALSE, then do not add it to the cache, and return GLOBUS_GASS_CACHE_URL_NOT_FOUND\&. .PP If this function returns GLOBUS_GASS_CACHE_ADD_EXISTS or GLOBUS_GASS_CACHE_ADD_NEW, then \fBglobus_gass_cache_add_done()\fP or \fBglobus_gass_cache_delete()\fP must be subsequently called to unlock the cache entry\&. .PP Subsequent calls to \fBglobus_gass_cache_add()\fP and \fBglobus_gass_cache_delete_start()\fP on the same cache and url, made either from this process or another, will block until the cache entry is unlocked\&. .PP If tag==NULL, then a tag with the value 'null' will be added to the cache entry's tag list\&. .PP The same tag can be used multiple times, in which case this tag will be added to the entry's tag list multiple times\&. .PP Note: It is recommended that proglobus_grams started via GLOBUS_GRAM pass a tag value of getenv('GLOBUS_GRAM_JOB_CONTACT'), since upon completion of a job GLOBUS_GRAM will automatically cleanup entries with this tag\&. .PP \fBNote:\fP .RS 4 the local_filename MUST be free by the user in a subsequent operation, using free() .RE .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIurl\fP URL of the file to be cached\&. It is used as the main key to the cache entries\&. .br \fItag\fP Tag specifying which job is/are using the cache\&. This is usually the GLOBUS_GRAM_JOB_CONTACT\&. Can be NULL or empty; the tag 'null' is then used\&. create - Tells if the cache entry should be created if it is not already existing\&. .br \fIcreate\fP Flag to create if it does not already exist\&. .br \fItimestamp\fP Timestamp of the cached file, set by globus_gass_cache_done(), (or \fBglobus_gass_cache_delete()\fP )\&. .br \fIlocal_filename\fP Path the the local file caching the file specified by 'url'\&. NULL if 'url' not yet cached and creation not requested (create false)\&. .RE .PP \fBReturns:\fP .RS 4 .IP "\(bu" 2 GLOBUS_GASS_CACHE_URL_NOT_FOUND .IP "\(bu" 2 GLOBUS_GASS_CACHE_ADD_NEW .IP "\(bu" 2 GLOBUS_GASS_CACHE_ADD_EXISTS .IP "\(bu" 2 or any of the defined gass error code\&. .PP .RE .PP .SS "int globus_gass_cache_add_done (\fBglobus_gass_cache_t\fP cache_handle, const char * url, const char * tag, unsigned long timestamp)" .PP Complete adding a cache entry and unlock it\&. \fBglobus_gass_cache_add_done()\fP MUST be called after \fBglobus_gass_cache_add()\fP, to set the timestamp in the cache entry for the URL, and then unlock the cache entry\&. (The only case it does not need to be called is if \fBglobus_gass_cache_add()\fP has returned GLOBUS_GASS_CACHE_URL_NOT_FOUND, of course\&. .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIurl\fP URL of the cached file to set as 'done' (unlock) .br \fItag\fP Tag specifying which job has locked the cache and must therefore be unlocked\&. It is an error to call this function with a tag which does not currently own the cache lock\&. .br \fItimestamp\fP Timestamp of the cached file\&. .RE .PP \fBReturns:\fP .RS 4 \fBglobus_gass_cache_add_done()\fP returns GLOBUS_SUCCESS or any of the defined GASS Cache error codes\&. .RE .PP .SS "int globus_gass_cache_cleanup_tag (\fBglobus_gass_cache_t\fP cache_handle, const char * url, const char * tag)" .PP Remove a tag from a cache entry\&. Remove all instances of the tag from the cache entry's tag list\&. If there are no more tags in the tag list, then remove this cache entry and delete the associated local cache file\&. If the cache entry is locked with the same tag as is passed to this function, then the entry is unlocked after removing the tags\&. Otherwise, the cache entry's lock is left untouched\&. .PP This function does not block on a locked reference\&. .PP \fBNote:\fP .RS 4 The GLOBUS_GRAM job manager will automatically call this function with a tag of getenv('GLOBUS_GRAM_JOB_CONTACT') upon completion of a job\&. .RE .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIurl\fP URL of the file to be cached\&. It is used as the main key to the cache entries\&. .br \fItag\fP Tag specifying which job is/are using the cache\&. This is usually the GLOBUS_GRAM_JOB_CONTACT\&. Can be NULL or empty; the tag 'null' is then used\&. .RE .PP \fBReturns:\fP .RS 4 The \fBglobus_gass_cache_cleanup_tag()\fP function returns GLOBUS_SUCCESS or any of the defined GASS Cache error codes\&. .RE .PP .SS "int globus_gass_cache_cleanup_tag_all (\fBglobus_gass_cache_t\fP cache_handle, char * tag)" .PP Remove a tag from all cache entries .PP Remove all instances of the tag from the cache entry's tag list\&. If there are no more tags in the tag list, then remove this cache entry and delete the associated local cache file\&. If the cache entry is locked with the same tag as is passed to this function, then the entry is unlocked after removing the tags\&. Otherwise, the cache entry's lock is left untouched\&. This function does not block on a locked reference\&. This function differs from \fBglobus_gass_cache_cleanup_tag()\fP in that this cleans up \fBall\fP URLs related with this tag\&. .PP \fBNote:\fP .RS 4 The GLOBUS_GRAM job manager will automatically call this function with a tag of getenv('GLOBUS_GRAM_JOB_CONTACT') upon completion of a job\&. .RE .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fItag\fP Tag specifying which job is/are using the cache\&. This is usually the GLOBUS_GRAM_JOB_CONTACT\&. Can be NULL or empty; the tag 'null' is then used\&. .RE .PP \fBReturns:\fP .RS 4 The \fBglobus_gass_cache_cleanup_tag_all()\fP function returns GLOBUS_SUCCESS or any of the defined GASS Cache error codes\&. .RE .PP .SS "int globus_gass_cache_close (\fBglobus_gass_cache_t\fP * cache_handlep)" .PP Close a cache handle\&. Close (NOT delete) a previously opened cache: .IP "\(bu" 2 close the opened files and .IP "\(bu" 2 free the memory allocated for the cache_handle\&. .IP "\(bu" 2 mark the handle as 'not initialized'\&. .PP .PP Parameters: cache_handle: Handle to the opened cache directory to use\&. .PP cache_handle->is_init set to 'not initialized' and all the files opened bu globus_gass_cache_open are closed \&. .PP Returns: GLOBUS_SUCCESS or error code: GLOBUS_GASS_CACHE_ERROR_CACHE_NOT_OPENED .SS "int globus_gass_cache_delete (\fBglobus_gass_cache_t\fP cache_handle, const char * url, const char * tag, unsigned long timestamp, globus_bool_t is_locked)" .PP Remove one instance of the tag from the cache entry's tag list\&. If there are no more tags in the tag list, then remove this cache entry and delete the associated local cache file\&. .PP Otherwise, update the timestamp to the passed value\&. .PP This call will leave the cache entry unlocked\&. .PP If is_locked==GLOBUS_TRUE, then this cache entry was locked during a previous call to \fBglobus_gass_cache_add()\fP or \fBglobus_gass_cache_delete_start()\fP\&. The cache file should be locked by the corresponding url/tag, or an error is returned\&. If it is locked by the corresponding url/tag, then the normal operation occur, whithout blocking (remove one instance from the tag update the timestamp and unlock the cache)\&. .PP If is_locked==GLOBUS_FALSE, eventually wait the cache is not locked any more, and then proceed with the normal operations\&.(remove one instance from the tag list and update the timestamp)\&. .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIurl\fP URL of the file to be cached\&. It is used as the main key to the cache entries\&. .br \fItag\fP Tag specifying which job is/are using the cache\&. This is usually the GLOBUS_GRAM_JOB_CONTACT\&. Can be NULL or empty; the tag 'null' is then used\&. .br \fItimestamp\fP Timestamp of the cached file\&. .br \fIis_locked\fP Indicate if this cache entry was locked during a previous call to \fBglobus_gass_cache_add()\fP or \fBglobus_gass_cache_delete_start()\fP\&. .RE .PP \fBReturns:\fP .RS 4 The \fBglobus_gass_cache_delete()\fP function returns GLOBUS_SUCCESS or any of the defined GASS Cache error codes\&. .RE .PP .SS "int globus_gass_cache_delete_start (\fBglobus_gass_cache_t\fP cache_handle, const char * url, const char * tag, unsigned long * timestamp)" .PP Remove a cache tag\&. Lock the cache entry for the URL, and return the cache entry's current timestamp in *timestamp\&. This function will block if the data file is already locked, until it is unlocked\&. .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIurl\fP URL of the cached file to set as 'done' (unlock) .br \fItag\fP Tag specifying which job has locked the cache and must therefore be unlocked\&. It is an error to call this function with a tag which does not currently own the cache lock\&. .br \fItimestamp\fP Timestamp of the cached file, set by globus_gass_cache_done(), (or \fBglobus_gass_cache_delete()\fP )\&. .RE .PP \fBReturns:\fP .RS 4 The \fBglobus_gass_cache_delete_start()\fP function returns GLOBUS_SUCCESS or any of the defined GASS Cache error code\&. .RE .PP .SS "const char* globus_gass_cache_error_string (int error_code)" .PP Look up the error string corresponding to a GASS Cache error\&. Return a pointer on an error description string\&. .PP \fBParameters:\fP .RS 4 \fIerror_code\fP error code returned by a previously called globus_gass_cache function\&. .RE .PP \fBReturns:\fP .RS 4 The \fBglobus_gass_cache_error_string()\fP function returns a pointer to an error message, or NULL if error_code is invalid\&. .RE .PP .SS "int globus_gass_cache_get_cache_dir (const \fBglobus_gass_cache_t\fP cache_handle, char ** cache_dir)" .PP Get the GASS Cache's root directory\&. Get a the root cache of directory\&. This is exported for use in the globus_gass_cache program\&. .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIcache_dir\fP Pointer to the cache directory .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GASS_CACHE_ERROR_NO_MEMORY\fP No memory .RE .PP .SS "int globus_gass_cache_get_cache_type_string (const \fBglobus_gass_cache_t\fP cache_handle, char ** cache_type)" .PP Get the type of GASS Cache directory layout\&. Get a string which describes the cache type ('normal' or 'flat') .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIcache_type\fP Pointer to the strdup()ed string .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GASS_CACHE_ERROR_NO_MEMORY\fP No memory .RE .PP .SS "int globus_gass_cache_get_dirs (const \fBglobus_gass_cache_t\fP cache_handle, const char * url, const char * tag, char ** global_root, char ** local_root, char ** tmp_root, char ** log_root, char ** global_dir, char ** local_dir)" .PP Get the set of directories used by a GASS Cache\&. Gets a bunch of directories\&. This is exported for use in the globus_gass_cache program\&. .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIurl\fP The incoming URL .br \fItag\fP The incoming tag .br \fIlocal_root\fP Pointer to the 'local root' directory .br \fIglobal_root\fP Pointer to the 'global root' directory .br \fItmp_root\fP Pointer to the 'tmp root' directory .br \fIlog_root\fP Pointer to the root log directory .br \fIlocal_dir\fP Pointer to the related 'local' directory .br \fIglobal_dir\fP Pointer to the related 'global' directory .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GASS_CACHE_ERROR_NO_MEMORY\fP No memory .RE .PP .SS "int globus_gass_cache_mangle_tag (const \fBglobus_gass_cache_t\fP cache_handle, const char * tag, char ** mangled_tag, int * length)" .PP Convert a tag to a string suitable as a file path\&. Mangles the given tag into a chunk suitable for using as a file / path name\&. This is exported for use in the globus_gass_cache program\&. .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fItag\fP The incoming tag to mangle (NULL-terminated) .br \fImangled_tag\fP Pointer to the output string; a buffer for the real string is malloc()ed for the application\&. If mangled is NULL, then no such buffer is allocated, and no mangled string is created\&. This can be useful to just get the length of the mangled string\&. .br \fIlength\fP A pointer to the length of the resulting string\&. If NULL, this is not assigned to\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GASS_CACHE_ERROR_NO_MEMORY\fP No memory .RE .PP .SS "int globus_gass_cache_mangle_url (const \fBglobus_gass_cache_t\fP cache_handle, const char * url, char ** mangled_url, int * length)" .PP Convert a URL to a string suitable as a file path\&. Mangles the given URL into a chunk suitable for using as a file / path name\&. This is exported for use in the globus_gass_cache program\&. .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIurl\fP The incoming URL to mangle (NULL-terminated) .br \fImangled_url\fP Pointer to the output string; a buffer for the real string is malloc()ed for the application\&. If mangled is NULL, then no such buffer is allocated, and no mangled string is created\&. This can be useful to just get the length of the mangled string\&. .br \fIlength\fP A pointer to the length of the resulting string\&. If NULL, this is not assigned to\&. .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GASS_CACHE_ERROR_NO_MEMORY\fP No memory .RE .PP .SS "int globus_gass_cache_open (const char * cache_directory_path, \fBglobus_gass_cache_t\fP * cache_handlep)" .PP Open a GASS Cache\&. Open the cache specified by the cache_directory_path argument, and return a cache handle that can be used in subsequent cache calls\&. .PP If cache_directory_path is NULL, then use the value contained in the GLOBUS_GASS_CACHE_DEFAULT environment variable if it is defined, otherwise use ~/\&.globus_gass_cache\&. .PP The cache_directory_path must be a directory\&. If it is a file, this call will fail with a non-0 return value\&. .PP If the specified directory does not exist, then this call will create the directory\&. .PP \fBParameters:\fP .RS 4 \fIcache_directory_path\fP Path to the cache directory to open\&. Can be NULL (see above) .br \fIcache_handlep\fP Structure containning all the necessary information to access the cache (file names, descriptor,\&.\&.\&.) (see globus_gass_gache\&.h) Some files are also opened: \fBglobus_gass_cache_close()\fP must be called subsequently to close those files\&. This parameter is modified by the \fBglobus_gass_cache_open()\fP .RE .PP \fBReturn values:\fP .RS 4 \fIGLOBUS_SUCCESS\fP Success .br \fIGLOBUS_GASS_CACHE_ERROR_CACHE_ALREADY_OPENED\fP Handle already opened .br \fIGLOBUS_GASS_CACHE_ERROR_NAME_TOO_LONG\fP Path name too long .br \fIGLOBUS_GASS_CACHE_ERROR_NO_HOME\fP Can't find home directory for default cache path .RE .PP .SS "int globus_gass_cache_query (\fBglobus_gass_cache_t\fP cache_handle, const char * url, const char * tag, globus_bool_t wait_for_lock, unsigned long * timestamp, char ** local_filename, globus_bool_t * is_locked)" .PP Query the GASS Cache\&. Query if an item is in the cache .PP This call will block only if wait_for_lock is GLOBUS_TRUE .PP \fBParameters:\fP .RS 4 \fIcache_handle\fP Handle to the opened cache directory to use\&. .br \fIurl\fP URL of the file to query\&. It is used as the main key to the cache entries\&. .br \fItag\fP Tag specifying which job is/are using the cache\&. This is usually the GLOBUS_GRAM_JOB_CONTACT\&. Can be NULL or empty; the tag 'null' is then used\&. .br \fIwait_for_lock\fP If GLOBUS_TRUE, wait for any lock existing lock to be released\&. If GLOBUS_FALSE, doesn't wait for a lock to be released\&. .br \fItimestamp\fP Timestamp of the cached file, set by globus_gass_cache_done(), (or \fBglobus_gass_cache_delete()\fP )\&. .br \fIlocal_filename\fP Path the the local file caching the file specified by 'url'\&. NULL if 'url' not yet cached and creation not requested (create false)\&. .br \fIis_locked\fP GLOBUS_TRUE if the file is currently (at return time) locked\&. .RE .PP \fBReturns:\fP .RS 4 The \fBglobus_gass_cache_query()\fP function returns GLOBUS_SUCCESS, GLOBUS_GASS_CACHE_URL_NOT_FOUND, or any of the defined gass error code\&. .RE .PP .SH "Author" .PP Generated automatically by Doxygen for globus_gass_cache from the source code\&.