SYNOPSIS

#include <sys/types.h>

#include "dpm_api.h"

int dpm_get (int nbreqfiles, struct dpm_getfilereq *reqfiles, int nbprotocols, char **protocols, char *u_token, time_t retrytime, char *r_token, int *nbreplies, struct dpm_getfilestatus **filestatuses)

DESCRIPTION

dpm_get 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_getfilereq structures).

struct dpm_getfilereq {
	char		*from_surl;
	time_t	lifetime;
	char		f_type;
	char		s_token[CA_MAXDPMTOKENLEN+1];
	char		ret_policy;
	int		flags;
};

nbprotocols

specifies the number of protocols.

protocols

specifies the array of protocols.

u_token

specifies the user provided description associated with the request.

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_getfilestatus structures allocated by the API. The client application is responsible for freeing the array when not needed anymore.

struct dpm_getfilestatus {
	char		*from_surl;
	char		*turl;
	u_signed64	filesize;
	int		status;
	char		*errstring;
	time_t	pintime;
};

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.