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
348INT64_T chirp_reli_ticket_create(const char *host, char name[CHIRP_PATH_MAX], unsigned bits, time_t stoptime);
349
359INT64_T chirp_reli_ticket_register(const char *host, const char *name, const char *subject, time_t duration, time_t stoptime);
360
370INT64_T chirp_reli_ticket_modify(const char *host, const char *name, const char *path, const char *aclmask, time_t stoptime);
371
383INT64_T chirp_reli_ticket_get(const char *host, const char *name, char **subject, char **ticket, time_t * duration, char ***rights, time_t stoptime);
384
393INT64_T chirp_reli_ticket_list(const char *host, const char *subject, char ***list, time_t stoptime);
394
402INT64_T chirp_reli_ticket_delete(const char *host, const char *name, time_t stoptime);
403
413INT64_T chirp_reli_getacl(const char *host, const char *path, chirp_dir_t callback, void *arg, time_t stoptime);
414
424INT64_T chirp_reli_setacl(const char *host, const char *path, const char *subject, const char *rights, time_t stoptime);
425
434INT64_T chirp_reli_resetacl(const char *host, const char *path, const char *rights, time_t stoptime);
435
444INT64_T chirp_reli_locate(const char *host, const char *path, chirp_loc_t callback, void *arg, time_t stoptime);
445
454INT64_T chirp_reli_whoami(const char *host, char *subject, INT64_T length, time_t stoptime);
455
466INT64_T chirp_reli_whoareyou(const char *host, const char *rhost, char *subject, INT64_T length, time_t stoptime);
467
475INT64_T chirp_reli_unlink(const char *host, const char *path, time_t stoptime);
476
485INT64_T chirp_reli_rename(const char *host, const char *path, const char *newpath, time_t stoptime);
486
495INT64_T chirp_reli_link(const char *host, const char *path, const char *newpath, time_t stoptime);
496
505INT64_T chirp_reli_symlink(const char *host, const char *path, const char *newpath, time_t stoptime);
506
516INT64_T chirp_reli_readlink(const char *host, const char *path, char *buf, INT64_T length, time_t stoptime);
517
518
527INT64_T chirp_reli_mkdir(const char *host, const char *path, INT64_T mode, time_t stoptime);
528
537INT64_T chirp_reli_mkdir_recursive(const char *host, const char *path, INT64_T mode, time_t stoptime);
538
547INT64_T chirp_reli_rmdir(const char *host, const char *path, time_t stoptime);
548
559INT64_T chirp_reli_rmall(const char *host, const char *path, time_t stoptime);
560
570INT64_T chirp_reli_stat(const char *host, const char *path, struct chirp_stat *info, time_t stoptime);
571
582INT64_T chirp_reli_lstat(const char *host, const char *path, struct chirp_stat *info, time_t stoptime);
583
592INT64_T chirp_reli_statfs(const char *host, const char *path, struct chirp_statfs *info, time_t stoptime);
593
605INT64_T chirp_reli_access(const char *host, const char *path, INT64_T flags, time_t stoptime);
606
618INT64_T chirp_reli_chmod(const char *host, const char *path, INT64_T mode, time_t stoptime);
619
630INT64_T chirp_reli_chown(const char *host, const char *path, INT64_T uid, INT64_T gid, time_t stoptime);
631
642INT64_T chirp_reli_lchown(const char *host, const char *path, INT64_T uid, INT64_T gid, time_t stoptime);
643
652INT64_T chirp_reli_truncate(const char *host, const char *path, INT64_T length, time_t stoptime);
653
663INT64_T chirp_reli_utime(const char *host, const char *path, time_t actime, time_t modtime, time_t stoptime);
664
679INT64_T chirp_reli_hash(const char *host, const char *path, const char *algorithm, unsigned char digest[CHIRP_DIGEST_MAX], time_t stoptime);
680
694INT64_T chirp_reli_md5(const char *host, const char *path, unsigned char digest[CHIRP_DIGEST_MAX], time_t stoptime);
695
706INT64_T chirp_reli_setrep(const char *host, const char *path, int nreps, time_t stoptime );
707
708INT64_T chirp_reli_getxattr(const char *host, const char *path, const char *name, void *data, size_t size, time_t stoptime);
709INT64_T chirp_reli_fgetxattr(struct chirp_file *file, const char *name, void *data, size_t size, time_t stoptime);
710INT64_T chirp_reli_lgetxattr(const char *host, const char *path, const char *name, void *data, size_t size, time_t stoptime);
711INT64_T chirp_reli_listxattr(const char *host, const char *path, char *list, size_t size, time_t stoptime);
712INT64_T chirp_reli_flistxattr(struct chirp_file *file, char *list, size_t size, time_t stoptime);
713INT64_T chirp_reli_llistxattr(const char *host, const char *path, char *list, size_t size, time_t stoptime);
714INT64_T chirp_reli_setxattr(const char *host, const char *path, const char *name, const void *data, size_t size, int flags, time_t stoptime);
715INT64_T chirp_reli_fsetxattr(struct chirp_file *file, const char *name, const void *data, size_t size, int flags, time_t stoptime);
716INT64_T chirp_reli_lsetxattr(const char *host, const char *path, const char *name, const void *data, size_t size, int flags, time_t stoptime);
717INT64_T chirp_reli_removexattr(const char *host, const char *path, const char *name, time_t stoptime);
718INT64_T chirp_reli_fremovexattr(struct chirp_file *file, const char *name, time_t stoptime);
719INT64_T chirp_reli_lremovexattr(const char *host, const char *path, const char *name, time_t stoptime);
720
721INT64_T chirp_reli_job_create (const char *host, const char *json, chirp_jobid_t *id, time_t stoptime);
722INT64_T chirp_reli_job_commit (const char *host, chirp_jobid_t id, time_t stoptime);
723INT64_T chirp_reli_job_kill (const char *host, chirp_jobid_t id, time_t stoptime);
724INT64_T chirp_reli_job_status (const char *host, chirp_jobid_t id, char **status, time_t stoptime);
725INT64_T chirp_reli_job_wait (const char *host, chirp_jobid_t id, INT64_T timeout, char **status, time_t stoptime);
726INT64_T chirp_reli_job_reap (const char *host, chirp_jobid_t id, time_t stoptime);
727
735INT64_T chirp_reli_remote_debug(const char *host, const char *flag, time_t stoptime);
736
750INT64_T chirp_reli_localpath(const char *host, const char *path, char *localpath, int length, time_t stoptime);
751
763INT64_T chirp_reli_audit(const char *host, const char *path, struct chirp_audit **list, time_t stoptime);
764
777INT64_T chirp_reli_thirdput(const char *host, const char *path, const char *thirdhost, const char *thirdpath, time_t stoptime);
778
790INT64_T chirp_reli_mkalloc(const char *host, const char *path, INT64_T size, INT64_T mode, time_t stoptime);
791
803INT64_T chirp_reli_lsalloc(const char *host, const char *path, char *allocpath, INT64_T * total, INT64_T * inuse, time_t stoptime);
804
815INT64_T chirp_reli_bulkio(struct chirp_bulkio *list, int count, time_t stoptime);
816
825
834
843
847void chirp_reli_disconnect( const char *host );
848
849#endif
850
851/* 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.
INT64_T chirp_reli_ticket_delete(const char *host, const char *name, time_t stoptime)
Delete an access control ticket.
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_ticket_create(const char *host, char name[CHIRP_PATH_MAX], unsigned bits, time_t stoptime)
Create a new blank access control ticket.
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_ticket_register(const char *host, const char *name, const char *subject, time_t duration, time_t stoptime)
Register an access control ticket with a file serer.
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_ticket_get(const char *host, const char *name, char **subject, char **ticket, time_t *duration, char ***rights, time_t stoptime)
Get the details of a registered ticket.
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_ticket_list(const char *host, const char *subject, char ***list, time_t stoptime)
List registered tikets on a server.
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_ticket_modify(const char *host, const char *name, const char *path, const char *aclmask, time_t stoptime)
Modify an access control ticket to grant futher access.
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