DPM_PUT

Section: DPM Library Functions (3)
Updated: $Date: 2006/12/20 15:21:57 $
Index Return to Main Contents
 

NAME

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

SYNOPSIS

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

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

DESCRIPTION

dpm_put makes a set of existing files available for I/O.

The input arguments are:

nbreqfiles
specifies the number of files belonging to the request.
reqfiles
specifies the array of file requests (dpm_putfilereq structures).

struct dpm_putfilereq {
        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;
};
nbprotocols
specifies the number of protocols.
protocols
specifies the array of protocols.
u_token
specifies the user provided description associated with the request.
overwrite
if set to 1, it allows to overwrite an existing file.
retrytime
This field is currently ignored.

The output arguments are:

r_token
Address of a buffer to receive the system allocated token. The buffer must be at least CA_MAXDPMTOKENLEN+1 characters long.
nbreplies
will be set to the number of replies in the array of file statuses.
filestatuses
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

EFAULT
reqfiles, protocols, r_token, nbreplies or filestatuses is a NULL pointer.
ENOMEM
Memory could not be allocated for marshalling the request.
EINVAL
nbreqfiles or nbprotocols is not strictly positive, the protocols are not supported, the length of the user request description is greater than 255 or all file requests have errors.
SENOSHOST
Host unknown.
SEINTERNAL
Database error.
SECOMERR
Communication error.