Scroll to navigation

DPM_PUTX(3) DPM Library Functions DPM_PUTX(3)

NAME

dpm_putx - make a set of existing files available for I/O

SYNOPSIS

#include <sys/types.h>
#include "dpm_api.h"

int dpm_putx (int nbreqfiles, struct dpm_putfilereqx *reqfiles, int nbprotocols, char **protocols, char *u_token, int overwrite, time_t retrytime, char *r_token, int *nbreplies, struct dpm_putfilestatus **filestatuses)

DESCRIPTION

dpm_putx makes a set of existing files available for I/O. Compared to dpm_put there is control over the destination within the DPM available.

The input arguments are:

specifies the number of files belonging to the request.
specifies the array of file requests (dpm_putfilereqx structures).

struct dpm_putfilereqx {
	char		*to_surl;
	time_t	lifetime;
	time_t	f_lifetime;
	char		f_type;
	char		s_token[CA_MAXDPMTOKENLEN+1];
	char		ret_policy;
	char		ac_latency;
	u_signed64	requested_size;
	int		reserved; /* must be zero */
	char		server[CA_MAXHOSTNAMELEN+1];
	char		pfnhint[CA_MAXSFNLEN+1];
};
specifies the number of protocols.
specifies the array of protocols.
specifies the user provided description associated with the request.
if set to 1, it allows to overwrite an existing file.
This field is currently ignored.

The output arguments are:

Address of a buffer to receive the system allocated token. The buffer must be at least CA_MAXDPMTOKENLEN+1 characters long.
will be set to the number of replies in the array of file statuses.
will be set to the address of an array of dpm_putfilestatus structures allocated by the API. The client application is responsible for freeing the array when not needed anymore.

struct dpm_putfilestatus {
	char		*to_surl;
	char		*turl;
	u_signed64	filesize;
	int		status;
	char		*errstring;
	time_t	pintime;
	time_t	f_lifetime;
};

RETURN VALUE

This routine returns 0 if the operation was successful or -1 if the operation failed. In the latter case, serrno is set appropriately.

ERRORS

reqfiles, protocols, r_token, nbreplies or filestatuses is a NULL pointer.
Memory could not be allocated for marshalling the request.
nbreqfiles or nbprotocols is not strictly positive, the protocols are not supported, the length of the user request description is greater than 255, reserved is not zero or all file requests have errors.
Host unknown.
Database error.
Communication error.
$Date: 2013/11/27 10:00:00 $ LCG