cctools
chirp_reli.h
Go to the documentation of this file.
1/*
2Copyright (C) 2003-2004 Douglas Thain and the University of Wisconsin
3Copyright (C) 2022 The University of Notre Dame
4This software is distributed under the GNU General Public License.
5See the file COPYING for details.
6*/
7
32#ifndef CHIRP_RELI_H
33#define CHIRP_RELI_H
34
35#include "chirp_types.h"
36
37#include <sys/types.h>
38#include <stdio.h>
39#include <dirent.h>
40
59struct chirp_file *chirp_reli_open(const char *host, const char *path, INT64_T flags, INT64_T mode, time_t stoptime);
60
69INT64_T chirp_reli_close(struct chirp_file *file, time_t stoptime);
70
81INT64_T chirp_reli_pread(struct chirp_file *file, void *buffer, INT64_T length, INT64_T offset, time_t stoptime);
82
93INT64_T chirp_reli_pwrite(struct chirp_file *file, const void *buffer, INT64_T length, INT64_T offset, time_t stoptime);
94
105INT64_T chirp_reli_pread_unbuffered(struct chirp_file *file, void *buffer, INT64_T length, INT64_T offset, time_t stoptime);
106
117INT64_T chirp_reli_pwrite_unbuffered(struct chirp_file *file, const void *buffer, INT64_T length, INT64_T offset, time_t stoptime);
118
132INT64_T chirp_reli_sread(struct chirp_file *file, void *buffer, INT64_T length, INT64_T stride_length, INT64_T stride_skip, INT64_T offset, time_t stoptime);
133
147INT64_T chirp_reli_swrite(struct chirp_file *file, const void *buffer, INT64_T length, INT64_T stride_length, INT64_T stride_skip, INT64_T offset, time_t stoptime);
148
157INT64_T chirp_reli_fstat(struct chirp_file *file, struct chirp_stat *info, time_t stoptime);
158
167INT64_T chirp_reli_fstatfs(struct chirp_file *file, struct chirp_statfs *info, time_t stoptime);
168
178INT64_T chirp_reli_fchown(struct chirp_file *file, INT64_T uid, INT64_T gid, time_t stoptime);
179
189INT64_T chirp_reli_fchmod(struct chirp_file *file, INT64_T mode, time_t stoptime);
190
198INT64_T chirp_reli_ftruncate(struct chirp_file *file, INT64_T length, time_t stoptime);
199
209INT64_T chirp_reli_flush(struct chirp_file *file, time_t stoptime);
210
211INT64_T chirp_reli_fsync(struct chirp_file *file, time_t stoptime);
212
225INT64_T chirp_reli_getfile(const char *host, const char *path, FILE * stream, time_t stoptime);
226
238INT64_T chirp_reli_getfile_buffer(const char *host, const char *path, char **buffer, time_t stoptime);
239
253INT64_T chirp_reli_putfile(const char *host, const char *path, FILE * stream, INT64_T mode, INT64_T length, time_t stoptime);
254
267INT64_T chirp_reli_putfile_buffer(const char *host, const char *path, const void *buffer, INT64_T mode, size_t length, time_t stoptime);
268
279CHIRP_SEARCH *chirp_reli_opensearch( const char *host, const char *paths, const char *pattern, int flags, time_t stoptime );
280
291INT64_T chirp_reli_getlongdir(const char *host, const char *path, chirp_longdir_t callback, void *arg, time_t stoptime);
292
304INT64_T chirp_reli_getdir(const char *host, const char *path, chirp_dir_t callback, void *arg, time_t stoptime);
305
316struct chirp_dir *chirp_reli_opendir(const char *host, const char *path, time_t stoptime);
317
328struct chirp_dirent *chirp_reli_readdir(struct chirp_dir *dir);
329
338void chirp_reli_closedir(struct chirp_dir *dir);
339
340/* FIXME document */
341INT64_T chirp_reli_ticket_create(const char *host, char name[CHIRP_PATH_MAX], unsigned bits, time_t stoptime);
342INT64_T chirp_reli_ticket_register(const char *host, const char *name, const char *subject, time_t duration, time_t stoptime);
343INT64_T chirp_reli_ticket_delete(const char *host, const char *name, time_t stoptime);
344INT64_T chirp_reli_ticket_list(const char *host, const char *subject, char ***list, time_t stoptime);
345INT64_T chirp_reli_ticket_get(const char *host, const char *name, char **subject, char **ticket, time_t * duration, char ***rights, time_t stoptime);
346INT64_T chirp_reli_ticket_modify(const char *host, const char *name, const char *path, const char *aclmask, time_t stoptime);
347
357INT64_T chirp_reli_getacl(const char *host, const char *path, chirp_dir_t callback, void *arg, time_t stoptime);
358
368INT64_T chirp_reli_setacl(const char *host, const char *path, const char *subject, const char *rights, time_t stoptime);
369
378INT64_T chirp_reli_resetacl(const char *host, const char *path, const char *rights, time_t stoptime);
379
388INT64_T chirp_reli_locate(const char *host, const char *path, chirp_loc_t callback, void *arg, time_t stoptime);
389
398INT64_T chirp_reli_whoami(const char *host, char *subject, INT64_T length, time_t stoptime);
399
410INT64_T chirp_reli_whoareyou(const char *host, const char *rhost, char *subject, INT64_T length, time_t stoptime);
411
419INT64_T chirp_reli_unlink(const char *host, const char *path, time_t stoptime);
420
429INT64_T chirp_reli_rename(const char *host, const char *path, const char *newpath, time_t stoptime);
430
439INT64_T chirp_reli_link(const char *host, const char *path, const char *newpath, time_t stoptime);
440
449INT64_T chirp_reli_symlink(const char *host, const char *path, const char *newpath, time_t stoptime);
450
460INT64_T chirp_reli_readlink(const char *host, const char *path, char *buf, INT64_T length, time_t stoptime);
461
462
471INT64_T chirp_reli_mkdir(const char *host, const char *path, INT64_T mode, time_t stoptime);
472
481INT64_T chirp_reli_mkdir_recursive(const char *host, const char *path, INT64_T mode, time_t stoptime);
482
491INT64_T chirp_reli_rmdir(const char *host, const char *path, time_t stoptime);
492
503INT64_T chirp_reli_rmall(const char *host, const char *path, time_t stoptime);
504
514INT64_T chirp_reli_stat(const char *host, const char *path, struct chirp_stat *info, time_t stoptime);
515
526INT64_T chirp_reli_lstat(const char *host, const char *path, struct chirp_stat *info, time_t stoptime);
527
536INT64_T chirp_reli_statfs(const char *host, const char *path, struct chirp_statfs *info, time_t stoptime);
537
549INT64_T chirp_reli_access(const char *host, const char *path, INT64_T flags, time_t stoptime);
550
562INT64_T chirp_reli_chmod(const char *host, const char *path, INT64_T mode, time_t stoptime);
563
574INT64_T chirp_reli_chown(const char *host, const char *path, INT64_T uid, INT64_T gid, time_t stoptime);
575
586INT64_T chirp_reli_lchown(const char *host, const char *path, INT64_T uid, INT64_T gid, time_t stoptime);
587
596INT64_T chirp_reli_truncate(const char *host, const char *path, INT64_T length, time_t stoptime);
597
607INT64_T chirp_reli_utime(const char *host, const char *path, time_t actime, time_t modtime, time_t stoptime);
608
623INT64_T chirp_reli_hash(const char *host, const char *path, const char *algorithm, unsigned char digest[CHIRP_DIGEST_MAX], time_t stoptime);
624
638INT64_T chirp_reli_md5(const char *host, const char *path, unsigned char digest[CHIRP_DIGEST_MAX], time_t stoptime);
639
650INT64_T chirp_reli_setrep(const char *host, const char *path, int nreps, time_t stoptime );
651
652INT64_T chirp_reli_getxattr(const char *host, const char *path, const char *name, void *data, size_t size, time_t stoptime);
653INT64_T chirp_reli_fgetxattr(struct chirp_file *file, const char *name, void *data, size_t size, time_t stoptime);
654INT64_T chirp_reli_lgetxattr(const char *host, const char *path, const char *name, void *data, size_t size, time_t stoptime);
655INT64_T chirp_reli_listxattr(const char *host, const char *path, char *list, size_t size, time_t stoptime);
656INT64_T chirp_reli_flistxattr(struct chirp_file *file, char *list, size_t size, time_t stoptime);
657INT64_T chirp_reli_llistxattr(const char *host, const char *path, char *list, size_t size, time_t stoptime);
658INT64_T chirp_reli_setxattr(const char *host, const char *path, const char *name, const void *data, size_t size, int flags, time_t stoptime);
659INT64_T chirp_reli_fsetxattr(struct chirp_file *file, const char *name, const void *data, size_t size, int flags, time_t stoptime);
660INT64_T chirp_reli_lsetxattr(const char *host, const char *path, const char *name, const void *data, size_t size, int flags, time_t stoptime);
661INT64_T chirp_reli_removexattr(const char *host, const char *path, const char *name, time_t stoptime);
662INT64_T chirp_reli_fremovexattr(struct chirp_file *file, const char *name, time_t stoptime);
663INT64_T chirp_reli_lremovexattr(const char *host, const char *path, const char *name, time_t stoptime);
664
665INT64_T chirp_reli_job_create (const char *host, const char *json, chirp_jobid_t *id, time_t stoptime);
666INT64_T chirp_reli_job_commit (const char *host, chirp_jobid_t id, time_t stoptime);
667INT64_T chirp_reli_job_kill (const char *host, chirp_jobid_t id, time_t stoptime);
668INT64_T chirp_reli_job_status (const char *host, chirp_jobid_t id, char **status, time_t stoptime);
669INT64_T chirp_reli_job_wait (const char *host, chirp_jobid_t id, INT64_T timeout, char **status, time_t stoptime);
670INT64_T chirp_reli_job_reap (const char *host, chirp_jobid_t id, time_t stoptime);
671
679INT64_T chirp_reli_remote_debug(const char *host, const char *flag, time_t stoptime);
680
694INT64_T chirp_reli_localpath(const char *host, const char *path, char *localpath, int length, time_t stoptime);
695
707INT64_T chirp_reli_audit(const char *host, const char *path, struct chirp_audit **list, time_t stoptime);
708
721INT64_T chirp_reli_thirdput(const char *host, const char *path, const char *thirdhost, const char *thirdpath, time_t stoptime);
722
734INT64_T chirp_reli_mkalloc(const char *host, const char *path, INT64_T size, INT64_T mode, time_t stoptime);
735
747INT64_T chirp_reli_lsalloc(const char *host, const char *path, char *allocpath, INT64_T * total, INT64_T * inuse, time_t stoptime);
748
759INT64_T chirp_reli_bulkio(struct chirp_bulkio *list, int count, time_t stoptime);
760
769
778
787
791void chirp_reli_disconnect( const char *host );
792
793#endif
794
795/* vim: set noexpandtab tabstop=8: */
#define CHIRP_PATH_MAX
The maximum length of a full path in any Chirp operation.
Definition chirp_protocol.h:20
INT64_T chirp_reli_putfile(const char *host, const char *path, FILE *stream, INT64_T mode, INT64_T length, time_t stoptime)
Put an entire file efficiently.
INT64_T chirp_reli_rename(const char *host, const char *path, const char *newpath, time_t stoptime)
Rename a file or directory.
struct chirp_file * chirp_reli_open(const char *host, const char *path, INT64_T flags, INT64_T mode, time_t stoptime)
Creates or opens a file in preparation for I/O.
INT64_T chirp_reli_getdir(const char *host, const char *path, chirp_dir_t callback, void *arg, time_t stoptime)
Get a simple directory listing.
INT64_T chirp_reli_fchown(struct chirp_file *file, INT64_T uid, INT64_T gid, time_t stoptime)
Change the ownership of a file.
struct chirp_dir * chirp_reli_opendir(const char *host, const char *path, time_t stoptime)
Open a directory for listing.
INT64_T chirp_reli_hash(const char *host, const char *path, const char *algorithm, unsigned char digest[CHIRP_DIGEST_MAX], time_t stoptime)
Checksum a remote file.
INT64_T chirp_reli_access(const char *host, const char *path, INT64_T flags, time_t stoptime)
Check access permissions.
INT64_T chirp_reli_lstat(const char *host, const char *path, struct chirp_stat *info, time_t stoptime)
Get file or link status.
INT64_T chirp_reli_resetacl(const char *host, const char *path, const char *rights, time_t stoptime)
Reset an access control list.
INT64_T chirp_reli_symlink(const char *host, const char *path, const char *newpath, time_t stoptime)
Create a symbolic link.
INT64_T chirp_reli_getlongdir(const char *host, const char *path, chirp_longdir_t callback, void *arg, time_t stoptime)
Get a detailed directory listing.
INT64_T chirp_reli_truncate(const char *host, const char *path, INT64_T length, time_t stoptime)
Truncate a file.
void chirp_reli_closedir(struct chirp_dir *dir)
Close a directory.
INT64_T chirp_reli_readlink(const char *host, const char *path, char *buf, INT64_T length, time_t stoptime)
Examine a symbolic link.
INT64_T chirp_reli_locate(const char *host, const char *path, chirp_loc_t callback, void *arg, time_t stoptime)
Identify the true location of a path.
INT64_T chirp_reli_mkdir(const char *host, const char *path, INT64_T mode, time_t stoptime)
Create a new directory.
INT64_T chirp_reli_bulkio(struct chirp_bulkio *list, int count, time_t stoptime)
Perform multiple I/O operations in bulk.
INT64_T chirp_reli_ftruncate(struct chirp_file *file, INT64_T length, time_t stoptime)
Truncate an open file.
INT64_T chirp_reli_unlink(const char *host, const char *path, time_t stoptime)
Delete a file.
INT64_T chirp_reli_getfile_buffer(const char *host, const char *path, char **buffer, time_t stoptime)
Get an entire file efficiently to memory.
INT64_T chirp_reli_pread_unbuffered(struct chirp_file *file, void *buffer, INT64_T length, INT64_T offset, time_t stoptime)
Read data from a file without buffering.
INT64_T chirp_reli_statfs(const char *host, const char *path, struct chirp_statfs *info, time_t stoptime)
Get filesystem status.
INT64_T chirp_reli_setacl(const char *host, const char *path, const char *subject, const char *rights, time_t stoptime)
Modify an access control list.
INT64_T chirp_reli_pwrite(struct chirp_file *file, const void *buffer, INT64_T length, INT64_T offset, time_t stoptime)
Write data to a file.
INT64_T chirp_reli_utime(const char *host, const char *path, time_t actime, time_t modtime, time_t stoptime)
Change the modification times of a file.
INT64_T chirp_reli_chown(const char *host, const char *path, INT64_T uid, INT64_T gid, time_t stoptime)
Change the ownership of a file.
INT64_T chirp_reli_chmod(const char *host, const char *path, INT64_T mode, time_t stoptime)
Change mode bits.
INT64_T chirp_reli_setrep(const char *host, const char *path, int nreps, time_t stoptime)
Set replication factor.
INT64_T chirp_reli_getacl(const char *host, const char *path, chirp_dir_t callback, void *arg, time_t stoptime)
Get an access control list.
INT64_T chirp_reli_sread(struct chirp_file *file, void *buffer, INT64_T length, INT64_T stride_length, INT64_T stride_skip, INT64_T offset, time_t stoptime)
Strided read from a file.
INT64_T chirp_reli_thirdput(const char *host, const char *path, const char *thirdhost, const char *thirdpath, time_t stoptime)
Third party transfer.
INT64_T chirp_reli_stat(const char *host, const char *path, struct chirp_stat *info, time_t stoptime)
Get file status.
INT64_T chirp_reli_mkdir_recursive(const char *host, const char *path, INT64_T mode, time_t stoptime)
Create a new directory recursively.
INT64_T chirp_reli_md5(const char *host, const char *path, unsigned char digest[CHIRP_DIGEST_MAX], time_t stoptime)
Checksum a remote file.
INT64_T chirp_reli_fchmod(struct chirp_file *file, INT64_T mode, time_t stoptime)
Change the mode bits of a file.
struct chirp_dirent * chirp_reli_readdir(struct chirp_dir *dir)
Read one item from a directory.
INT64_T chirp_reli_pwrite_unbuffered(struct chirp_file *file, const void *buffer, INT64_T length, INT64_T offset, time_t stoptime)
Write data to a file without buffering.
INT64_T chirp_reli_lchown(const char *host, const char *path, INT64_T uid, INT64_T gid, time_t stoptime)
Change the ownership of a file or link.
INT64_T chirp_reli_close(struct chirp_file *file, time_t stoptime)
Closes an open file.
void chirp_reli_blocksize_set(INT64_T bs)
Set the buffer block size.
void chirp_reli_cleanup_before_fork()
Prepare to fork in a parallel program.
INT64_T chirp_reli_fstatfs(struct chirp_file *file, struct chirp_statfs *info, time_t stoptime)
Get file system status.
INT64_T chirp_reli_rmall(const char *host, const char *path, time_t stoptime)
Delete a directory recursively.
INT64_T chirp_reli_getfile(const char *host, const char *path, FILE *stream, time_t stoptime)
Get an entire file efficiently.
INT64_T chirp_reli_link(const char *host, const char *path, const char *newpath, time_t stoptime)
Create a hard link.
INT64_T chirp_reli_localpath(const char *host, const char *path, char *localpath, int length, time_t stoptime)
Return the local path of a file.
INT64_T chirp_reli_whoareyou(const char *host, const char *rhost, char *subject, INT64_T length, time_t stoptime)
Return the server's identity against another server.
INT64_T chirp_reli_mkalloc(const char *host, const char *path, INT64_T size, INT64_T mode, time_t stoptime)
Create a space allocation.
INT64_T chirp_reli_blocksize_get()
Return the current buffer block size.
INT64_T chirp_reli_whoami(const char *host, char *subject, INT64_T length, time_t stoptime)
Return the caller's identity.
INT64_T chirp_reli_audit(const char *host, const char *path, struct chirp_audit **list, time_t stoptime)
Measure remote space consumption.
INT64_T chirp_reli_pread(struct chirp_file *file, void *buffer, INT64_T length, INT64_T offset, time_t stoptime)
Read data from a file.
void chirp_reli_disconnect(const char *host)
Closes the link to the host, if active.
INT64_T chirp_reli_remote_debug(const char *host, const char *flag, time_t stoptime)
Set the debug options on the remote server.
INT64_T chirp_reli_lsalloc(const char *host, const char *path, char *allocpath, INT64_T *total, INT64_T *inuse, time_t stoptime)
List a space allocation.
INT64_T chirp_reli_flush(struct chirp_file *file, time_t stoptime)
Flush any pending changes to a file.
INT64_T chirp_reli_swrite(struct chirp_file *file, const void *buffer, INT64_T length, INT64_T stride_length, INT64_T stride_skip, INT64_T offset, time_t stoptime)
Strided write to a file.
INT64_T chirp_reli_fstat(struct chirp_file *file, struct chirp_stat *info, time_t stoptime)
Get file status.
CHIRP_SEARCH * chirp_reli_opensearch(const char *host, const char *paths, const char *pattern, int flags, time_t stoptime)
Open a file search stream Performs a search operation on the Chirp server and stores its results to b...
INT64_T chirp_reli_rmdir(const char *host, const char *path, time_t stoptime)
Delete a directory if it is empty.
INT64_T chirp_reli_putfile_buffer(const char *host, const char *path, const void *buffer, INT64_T mode, size_t length, time_t stoptime)
Put an entire file efficiently from memory.
All of the structure and type definitions used by the Chirp API.
void(* chirp_dir_t)(const char *path, void *arg)
A callback function typedef used to display a directory or access control list.
Definition chirp_types.h:190
void(* chirp_loc_t)(const char *location, void *arg)
A callback function typedef used to display a file's location(s).
Definition chirp_types.h:211
void(* chirp_longdir_t)(const char *path, struct chirp_stat *info, void *arg)
A callback function typedef used to display a detailed directory.
Definition chirp_types.h:201
#define CHIRP_DIGEST_MAX
Maximum digest size for a supported hash function.
Definition chirp_types.h:222
int64_t chirp_jobid_t
The type of Chirp job identifiers.
Definition chirp_types.h:216
Definition buffer.h:26
Descibes the space consumed by a single user on a Chirp server.
Definition chirp_types.h:175
Describes a bulk I/O operation.
Definition chirp_types.h:158
Describes a directory entry returned by chirp_reli_readdir.
Definition chirp_types.h:95
char * name
The name of the directory entry.
Definition chirp_types.h:96
struct chirp_stat info
The properties of the directory entry.
Definition chirp_types.h:98
Describes the properties of a file, much like the Unix stat structure.
Definition chirp_types.h:34
Describes the properties of a file system, much like the Unix statfs structure.
Definition chirp_types.h:72