00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef GLITE_DATA_TRANSFER_SIMPLE_H
00014 #define GLITE_DATA_TRANSFER_SIMPLE_H
00015
00016 #ifdef __cplusplus
00017 extern "C" {
00018 #endif
00019
00020 #include <stdarg.h>
00021 #include <stdint.h>
00022 #include <time.h>
00023
00024
00025 #define GLITE_FTS_IFC_VERSION "GLITE_FTS_IFC_VERSION"
00026
00027
00028
00029
00030
00031
00032 typedef struct _glite_transfer_ctx glite_transfer_ctx;
00033
00038 typedef struct _glite_transfer_Channel glite_transfer_Channel;
00039 typedef struct _glite_transfer_FileTransferStatus glite_transfer_FileTransferStatus;
00040 typedef struct _glite_transfer_JobStatus glite_transfer_JobStatus;
00041 typedef struct _glite_transfer_PlacementJob glite_transfer_PlacementJob;
00042 typedef struct _glite_transfer_TransferJob glite_transfer_TransferJob;
00043 typedef struct _glite_transfer_TransferJobElement glite_transfer_TransferJobElement;
00044 typedef struct _glite_transfer_TransferJobSummary glite_transfer_TransferJobSummary;
00045 typedef struct _glite_transfer_TransferParams glite_transfer_TransferParams;
00046 typedef struct _glite_transfer_StringPair glite_transfer_StringPair;
00047 typedef struct _glite_transfer_Roles glite_transfer_Roles;
00048 typedef struct _glite_transfer_VOShareElement glite_transfer_VOShareElement;
00049
00050 typedef struct _glite_transfer_TransferSnapshot glite_transfer_TransferSnapshot;
00051 typedef struct _glite_transfer_TransferSummary glite_transfer_TransferSummary;
00052 typedef struct _glite_transfer_TransferActivity glite_transfer_TransferActivity;
00053 typedef struct _glite_transfer_TransferActivityPeriod glite_transfer_TransferActivityPeriod;
00054 typedef struct _glite_transfer_TransferAgent glite_transfer_TransferAgent;
00055
00056
00057
00058
00059
00060
00064 typedef enum
00065 {
00066 GLITE_TRANSFER_EXCEPTION_AUTHORIZATION = -8,
00067 GLITE_TRANSFER_EXCEPTION_CANNOTCANCEL = -7,
00068 GLITE_TRANSFER_EXCEPTION_FILENOTFOUND = -6,
00069 GLITE_TRANSFER_EXCEPTION_INTERNAL = -5,
00070 GLITE_TRANSFER_EXCEPTION_INVALIDARGUMENT = -4,
00071 GLITE_TRANSFER_EXCEPTION_NOTEXISTS = -3,
00072 GLITE_TRANSFER_EXCEPTION_SERVICEBUSY = -2,
00073 GLITE_TRANSFER_EXCEPTION_TRANSFER = -1,
00074 GLITE_TRANSFER_ERROR_NONE,
00075 GLITE_TRANSFER_ERROR_UNKNOWN,
00076 GLITE_TRANSFER_ERROR_INVALIDARGUMENT,
00077 GLITE_TRANSFER_ERROR_OUTOFMEMORY,
00078 GLITE_TRANSFER_ERROR_SERVICEDISCOVERY,
00079 GLITE_TRANSFER_ERROR_SOAP
00080 } glite_transfer_errclass;
00081
00088 typedef enum
00089 {
00090 GLITE_TRANSFER_FAILED = -6,
00091 GLITE_TRANSFER_CATALOGFAILED = -5,
00092 GLITE_TRANSFER_FINISHED_DIRTY = -4,
00093 GLITE_TRANSFER_UNKNOWN = -3,
00094 GLITE_TRANSFER_CANCELED = -2,
00095 GLITE_TRANSFER_TRANSFERFAILED = -1,
00096 GLITE_TRANSFER_FINISHED = 0,
00097 GLITE_TRANSFER_SUBMITTED,
00098 GLITE_TRANSFER_PENDING,
00099 GLITE_TRANSFER_ACTIVE,
00100 GLITE_TRANSFER_CANCELING,
00101 GLITE_TRANSFER_WAITING,
00102 GLITE_TRANSFER_HOLD,
00103 GLITE_TRANSFER_DONE,
00104 GLITE_TRANSFER_READY,
00105 GLITE_TRANSFER_DONEWITHERRORS,
00106 GLITE_TRANSFER_FINISHING,
00107 GLITE_TRANSFER_AWAITING_PRESTAGE,
00108 GLITE_TRANSFER_PRESTAGING,
00109 GLITE_TRANSFER_WAITING_PRESTAGE,
00110 GLITE_TRANSFER_WAITING_CATALOG_RESOLUTION,
00111 GLITE_TRANSFER_WAITING_CATALOG_REGISTRATION
00112 } glite_transfer_state;
00113
00117 typedef enum
00118 {
00119 GLITE_CHANNEL_UNKNOWN = -1,
00120 GLITE_CHANNEL_ACTIVE,
00121 GLITE_CHANNEL_INACTIVE,
00122 GLITE_CHANNEL_DRAIN,
00123 GLITE_CHANNEL_STOPPED,
00124 GLITE_CHANNEL_HALTED
00125 } glite_channel_state;
00126
00127
00128
00129
00130
00131
00135 struct _glite_transfer_FileTransferStatus
00136 {
00137 char *logicalName;
00138 char *sourceSURL;
00139 char *destSURL;
00140 glite_transfer_state transferFileState;
00141 int numFailures;
00142 char *reason;
00143 char *reason_class;
00144 int duration;
00145 };
00146
00150 struct _glite_transfer_JobStatus
00151 {
00152 char *jobId;
00153 glite_transfer_state jobStatus;
00154 char *channelName;
00155 char *clientDN;
00156 char *reason;
00157 char *voName;
00158 struct timespec submitTime;
00159 int numFiles;
00160 int priority;
00161 };
00162
00174 struct _glite_transfer_PlacementJob
00175 {
00176 char **logicalFiles;
00177 unsigned __sizeLogicalFiles;
00178 char *sourceSE;
00179 char *destSE;
00180 glite_transfer_TransferParams *jobParams;
00181 char *credential;
00182 };
00183
00187 struct _glite_transfer_TransferJob
00188 {
00189 glite_transfer_TransferJobElement **transferJobElements;
00190 unsigned __sizetransferJobElements;
00191 glite_transfer_TransferParams *jobParams;
00192 char *credential;
00193 };
00194
00198 struct _glite_transfer_TransferJobElement
00199 {
00200 char *source;
00201 char *dest;
00202 };
00203
00207 struct _glite_transfer_VOShareElement
00208 {
00209 char *VOName;
00210 char *share;
00211 };
00212
00216 struct _glite_transfer_TransferJobSummary
00217 {
00218 glite_transfer_JobStatus *jobStatus;
00220 int numDone;
00221 int numActive;
00222 int numPending;
00223 int numCanceled;
00224 int numCanceling;
00225 int numFailed;
00226 int numFinished;
00227 int numSubmitted;
00228 int numHold;
00229 int numWaiting;
00230 int numCatalogFailed;
00231 int numRestarted;
00232 };
00233
00237 struct _glite_transfer_TransferParams
00238 {
00239 char **keys;
00240 char **values;
00241 unsigned num;
00242 };
00243
00247 struct _glite_transfer_Channel
00248 {
00249 char *channelName;
00250 char *sourceSite;
00251 char *destSite;
00252 char *contact;
00253 int numberOfStreams;
00254 int numberOfFiles;
00255 int bandwidth;
00256 int nominalThroughput;
00257 int __sizeVOShares;
00258 glite_transfer_VOShareElement **VOShares;
00259 glite_channel_state state;
00260 };
00261
00265 struct _glite_transfer_StringPair
00266 {
00267 char *string1;
00268 char *string2;
00269 };
00270
00274 struct _glite_transfer_Roles
00275 {
00276 char *clientDN;
00277 char *serviceAdmin;
00278 char *submitter;
00279 int __sizeVOManager;
00280 glite_transfer_StringPair **VOManager;
00281 int __sizechannelManager;
00282 glite_transfer_StringPair **channelManager;
00283 };
00284
00288 struct _glite_transfer_TransferSnapshot
00289 {
00290 time_t *time;
00291 int numSubmittedJobs;
00292 int numPendingJobs;
00293 int numActiveJobs;
00294 int numDoneJobs;
00295 int numHoldJobs;
00296 int numFailedJobs;
00297 int numCanceledJobs;
00298 int numCancelingJobs;
00299 int numFinishedDirtyJobs;
00300 int numFinishedJobs;
00301 int numSubmittedFiles;
00302 int numPendingFiles;
00303 int numActiveFiles;
00304 int numDoneFiles;
00305 int numWaitingFiles;
00306 int numHoldFiles;
00307 int numCancelingFiles;
00308 int numCanceledFiles;
00309 int numFailedFiles;
00310 int numFinishedFiles;
00311 int numCatalogFailedFiles;
00312 };
00313
00317 struct _glite_transfer_TransferSummary
00318 {
00319 char *channelName;
00320 char *voName;
00321 int __sizesnapshots;
00322 glite_transfer_TransferSnapshot **snapshots;
00323 };
00324
00328 struct _glite_transfer_TransferActivityPeriod
00329 {
00330 time_t *startTime;
00331 time_t *endTime;
00332 float averageRate;
00333 long bytesWritten;
00334 };
00335
00339 struct _glite_transfer_TransferActivity
00340 {
00341 char *channelName;
00342 char *voName;
00343 int __sizeactivityPeriods;
00344 glite_transfer_TransferActivityPeriod **activityPeriods;
00345 };
00346
00350 struct _glite_transfer_TransferAgent
00351 {
00352 char *name;
00353 char *DN;
00354 char *host;
00355 char *type;
00356 time_t *lastActive;
00357 char *state;
00358 char *version;
00359 char *contact;
00360 };
00361
00366
00367
00368
00369
00382 glite_transfer_ctx *glite_transfer_new(const char *endpoint);
00383
00389 void glite_transfer_free(glite_transfer_ctx *ctx);
00390
00398 void glite_transfer_add_sites(glite_transfer_ctx *ctx, const char *s, const char *d);
00399
00409 const char *glite_transfer_get_error(glite_transfer_ctx *ctx);
00410
00418 glite_transfer_errclass glite_transfer_get_errclass(glite_transfer_ctx *ctx);
00419
00428 void glite_transfer_set_error(glite_transfer_ctx *ctx,
00429 glite_transfer_errclass errclass, const char *fmt, ...);
00430
00439 void glite_transfer_set_verror(glite_transfer_ctx *ctx,
00440 glite_transfer_errclass errclass, const char *fmt, va_list ap);
00441
00451 glite_transfer_state glite_transfer_state_parse(glite_transfer_ctx *ctx,
00452 const char *state);
00453
00461 const char *glite_transfer_state_str(glite_transfer_state state);
00462
00463
00464
00465
00466
00467
00468
00469
00480 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_new(glite_transfer_ctx *ctx,
00481 const char *source, const char *dest, glite_transfer_state state);
00488 void glite_transfer_FileTransferStatus_free(glite_transfer_ctx *ctx,
00489 glite_transfer_FileTransferStatus *status);
00497 void glite_transfer_FileTransferStatus_freeArray(glite_transfer_ctx *ctx,
00498 int nitems, glite_transfer_FileTransferStatus *status[]);
00507 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_clone(glite_transfer_ctx *ctx,
00508 const glite_transfer_FileTransferStatus *status);
00518 int glite_transfer_FileTransferStatus_setLogicalName(glite_transfer_ctx *ctx,
00519 glite_transfer_FileTransferStatus *status, const char *name);
00529 int glite_transfer_FileTransferStatus_setReason(glite_transfer_ctx *ctx,
00530 glite_transfer_FileTransferStatus *status, const char *reason);
00540 int glite_transfer_FileTransferStatus_setReasonClass(glite_transfer_ctx *ctx,
00541 glite_transfer_FileTransferStatus *status, const char *reasonClass);
00542
00552 glite_transfer_JobStatus *glite_transfer_JobStatus_new(glite_transfer_ctx *ctx,
00553 const char *jobId, glite_transfer_state jobStatus);
00560 void glite_transfer_JobStatus_free(glite_transfer_ctx *ctx,
00561 glite_transfer_JobStatus *status);
00569 void glite_transfer_JobStatus_freeArray(glite_transfer_ctx *ctx, int nitems,
00570 glite_transfer_JobStatus *status[]);
00579 glite_transfer_JobStatus *glite_transfer_JobStatus_clone(glite_transfer_ctx *ctx,
00580 const glite_transfer_JobStatus *orig);
00581
00591 glite_transfer_PlacementJob *glite_transfer_PlacementJob_new(glite_transfer_ctx *ctx,
00592 const char *sourceSE, const char *destSE);
00599 void glite_transfer_PlacementJob_free(glite_transfer_ctx *ctx,
00600 glite_transfer_PlacementJob *job);
00609 glite_transfer_PlacementJob *glite_transfer_PlacementJob_clone(glite_transfer_ctx *ctx,
00610 const glite_transfer_PlacementJob *orig);
00620 int glite_transfer_PlacementJob_setParams(glite_transfer_ctx *ctx,
00621 glite_transfer_PlacementJob *job,
00622 const glite_transfer_TransferParams *params);
00632 int glite_transfer_PlacementJob_add(glite_transfer_ctx *ctx,
00633 glite_transfer_PlacementJob *job, const char *logicalFile);
00634
00644 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_new(glite_transfer_ctx *ctx,
00645 const char *src, const char *dst);
00652 void glite_transfer_TransferJobElement_free(glite_transfer_ctx *ctx,
00653 glite_transfer_TransferJobElement *elem);
00661 void glite_transfer_TransferJobElement_freeArray(glite_transfer_ctx *ctx,
00662 int nitems, glite_transfer_TransferJobElement *elems[]);
00671 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_clone(glite_transfer_ctx *ctx,
00672 const glite_transfer_TransferJobElement *orig);
00673
00681 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_new(glite_transfer_ctx *ctx);
00688 void glite_transfer_TransferJobSummary_free(glite_transfer_ctx *ctx,
00689 glite_transfer_TransferJobSummary *summary);
00698 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_clone(glite_transfer_ctx *ctx,
00699 const glite_transfer_TransferJobSummary *orig);
00700
00708 glite_transfer_TransferJob *glite_transfer_TransferJob_new(glite_transfer_ctx *ctx);
00715 void glite_transfer_TransferJob_free(glite_transfer_ctx *ctx,
00716 glite_transfer_TransferJob *job);
00725 glite_transfer_TransferJob *glite_transfer_TransferJob_clone(glite_transfer_ctx *ctx,
00726 const glite_transfer_TransferJob *orig);
00736 int glite_transfer_TransferJob_setParams(glite_transfer_ctx *ctx,
00737 glite_transfer_TransferJob *job,
00738 const glite_transfer_TransferParams *params);
00749 int glite_transfer_TransferJob_add(glite_transfer_ctx *ctx,
00750 glite_transfer_TransferJob *job,
00751 const char *src, const char *dst);
00752
00760 glite_transfer_TransferParams *glite_transfer_TransferParams_new(glite_transfer_ctx *ctx);
00767 void glite_transfer_TransferParams_free(glite_transfer_ctx *ctx,
00768 glite_transfer_TransferParams *params);
00777 glite_transfer_TransferParams *glite_transfer_TransferParams_clone(glite_transfer_ctx *ctx,
00778 const glite_transfer_TransferParams *orig);
00789 int glite_transfer_TransferParams_add(glite_transfer_ctx *ctx,
00790 glite_transfer_TransferParams *params, const char *key, const char *value);
00791
00802 glite_transfer_Channel *glite_transfer_Channel_new(glite_transfer_ctx *ctx,
00803 const char *name, const char *domainA, const char *domainB);
00810 void glite_transfer_Channel_free(glite_transfer_ctx *ctx,
00811 glite_transfer_Channel *channel);
00820 glite_transfer_Channel *glite_transfer_Channel_clone(glite_transfer_ctx *ctx,
00821 const glite_transfer_Channel *orig);
00831 int glite_transfer_Channel_setContact(glite_transfer_ctx *ctx,
00832 glite_transfer_Channel *channel, const char *contact);
00842 int glite_transfer_Channel_setState(glite_transfer_ctx *ctx,
00843 glite_transfer_Channel *channel, glite_channel_state state);
00844
00848 glite_transfer_Roles *glite_transfer_Roles_new(glite_transfer_ctx *ctx);
00849
00850 #ifdef __cplusplus
00851 }
00852 #endif
00853
00854 #endif