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_Channel2 glite_transfer_Channel2;
00040 typedef struct _glite_transfer_ChannelAuditEntry glite_transfer_ChannelAuditEntry;
00041 typedef struct _glite_transfer_FileTransferStatus glite_transfer_FileTransferStatus;
00042 typedef struct _glite_transfer_JobStatus glite_transfer_JobStatus;
00043 typedef struct _glite_transfer_PlacementJob glite_transfer_PlacementJob;
00044 typedef struct _glite_transfer_TransferJob glite_transfer_TransferJob;
00045 typedef struct _glite_transfer_TransferJobElement glite_transfer_TransferJobElement;
00046 typedef struct _glite_transfer_TransferJobSummary glite_transfer_TransferJobSummary;
00047 typedef struct _glite_transfer_TransferJobSummary2 glite_transfer_TransferJobSummary2;
00048 typedef struct _glite_transfer_TransferParams glite_transfer_TransferParams;
00049 typedef struct _glite_transfer_StringPair glite_transfer_StringPair;
00050 typedef struct _glite_transfer_Roles glite_transfer_Roles;
00051 typedef struct _glite_transfer_VOShareElement glite_transfer_VOShareElement;
00052 typedef struct _glite_transfer_VOLimitElement glite_transfer_VOLimitElement;
00053
00054 typedef struct _glite_transfer_TransferSnapshot glite_transfer_TransferSnapshot;
00055 typedef struct _glite_transfer_TransferSummary glite_transfer_TransferSummary;
00056 typedef struct _glite_transfer_TransferActivity glite_transfer_TransferActivity;
00057 typedef struct _glite_transfer_TransferActivityPeriod glite_transfer_TransferActivityPeriod;
00058 typedef struct _glite_transfer_TransferAgent glite_transfer_TransferAgent;
00059
00060
00061
00062
00063
00064
00068 typedef enum
00069 {
00070 GLITE_TRANSFER_EXCEPTION_AUTHORIZATION = -8,
00071 GLITE_TRANSFER_EXCEPTION_CANNOTCANCEL = -7,
00072 GLITE_TRANSFER_EXCEPTION_FILENOTFOUND = -6,
00073 GLITE_TRANSFER_EXCEPTION_INTERNAL = -5,
00074 GLITE_TRANSFER_EXCEPTION_INVALIDARGUMENT = -4,
00075 GLITE_TRANSFER_EXCEPTION_NOTEXISTS = -3,
00076 GLITE_TRANSFER_EXCEPTION_SERVICEBUSY = -2,
00077 GLITE_TRANSFER_EXCEPTION_TRANSFER = -1,
00078 GLITE_TRANSFER_ERROR_NONE,
00079 GLITE_TRANSFER_ERROR_UNKNOWN,
00080 GLITE_TRANSFER_ERROR_INVALIDARGUMENT,
00081 GLITE_TRANSFER_ERROR_OUTOFMEMORY,
00082 GLITE_TRANSFER_ERROR_SERVICEDISCOVERY,
00083 GLITE_TRANSFER_ERROR_SOAP
00084 } glite_transfer_errclass;
00085
00092 typedef enum
00093 {
00094 GLITE_TRANSFER_FAILED = -6,
00095 GLITE_TRANSFER_CATALOGFAILED = -5,
00096 GLITE_TRANSFER_FINISHED_DIRTY = -4,
00097 GLITE_TRANSFER_UNKNOWN = -3,
00098 GLITE_TRANSFER_CANCELED = -2,
00099 GLITE_TRANSFER_TRANSFERFAILED = -1,
00100 GLITE_TRANSFER_FINISHED = 0,
00101 GLITE_TRANSFER_SUBMITTED,
00102 GLITE_TRANSFER_PENDING,
00103 GLITE_TRANSFER_ACTIVE,
00104 GLITE_TRANSFER_CANCELING,
00105 GLITE_TRANSFER_WAITING,
00106 GLITE_TRANSFER_HOLD,
00107 GLITE_TRANSFER_DONE,
00108 GLITE_TRANSFER_READY,
00109 GLITE_TRANSFER_DONEWITHERRORS,
00110 GLITE_TRANSFER_FINISHING,
00111 GLITE_TRANSFER_AWAITING_PRESTAGE,
00112 GLITE_TRANSFER_PRESTAGING,
00113 GLITE_TRANSFER_WAITING_PRESTAGE,
00114 GLITE_TRANSFER_WAITING_CATALOG_RESOLUTION,
00115 GLITE_TRANSFER_WAITING_CATALOG_REGISTRATION
00116 } glite_transfer_state;
00117
00121 typedef enum
00122 {
00123 GLITE_CHANNEL_UNKNOWN = -1,
00124 GLITE_CHANNEL_ACTIVE,
00125 GLITE_CHANNEL_INACTIVE,
00126 GLITE_CHANNEL_DRAIN,
00127 GLITE_CHANNEL_STOPPED,
00128 GLITE_CHANNEL_HALTED,
00129 GLITE_CHANNEL_ARCHIVED,
00130 GLITE_CHANNEL_DELETED
00131 } glite_channel_state;
00132
00133
00134
00135
00136
00137
00141 struct _glite_transfer_FileTransferStatus
00142 {
00143 char *logicalName;
00144 char *sourceSURL;
00145 char *destSURL;
00146 glite_transfer_state transferFileState;
00147 int numFailures;
00148 char *reason;
00149 char *reason_class;
00150 int duration;
00151 };
00152
00156 struct _glite_transfer_JobStatus
00157 {
00158 char *jobId;
00159 glite_transfer_state jobStatus;
00160 char *channelName;
00161 char *clientDN;
00162 char *reason;
00163 char *voName;
00164 struct timespec submitTime;
00165 int numFiles;
00166 int priority;
00167 };
00168
00180 struct _glite_transfer_PlacementJob
00181 {
00182 char **logicalFiles;
00183 unsigned __sizeLogicalFiles;
00184 char *sourceSE;
00185 char *destSE;
00186 glite_transfer_TransferParams *jobParams;
00187 char *credential;
00188 };
00189
00193 struct _glite_transfer_TransferJob
00194 {
00195 glite_transfer_TransferJobElement **transferJobElements;
00196 unsigned __sizetransferJobElements;
00197 glite_transfer_TransferParams *jobParams;
00198 char *credential;
00199 };
00200
00204 struct _glite_transfer_TransferJobElement
00205 {
00206 char *source;
00207 char *dest;
00208 };
00209
00213 struct _glite_transfer_VOShareElement
00214 {
00215 char *VOName;
00216 char *share;
00217 };
00218
00222 struct _glite_transfer_VOLimitElement
00223 {
00224 char *VOName;
00225 char *limit;
00226 };
00227
00231 struct _glite_transfer_TransferJobSummary
00232 {
00233 glite_transfer_JobStatus *jobStatus;
00235 int numDone;
00236 int numActive;
00237 int numPending;
00238 int numCanceled;
00239 int numCanceling;
00240 int numFailed;
00241 int numFinished;
00242 int numSubmitted;
00243 int numHold;
00244 int numWaiting;
00245 int numCatalogFailed;
00246 int numRestarted;
00247 };
00248
00252 struct _glite_transfer_TransferJobSummary2
00253 {
00254 glite_transfer_JobStatus *jobStatus;
00256 int numDone;
00257 int numActive;
00258 int numPending;
00259 int numCanceled;
00260 int numCanceling;
00261 int numFailed;
00262 int numFinished;
00263 int numSubmitted;
00264 int numHold;
00265 int numWaiting;
00266 int numCatalogFailed;
00267 int numRestarted;
00268 int numReady;
00269 int numFinishing;
00270 int numAwaitingPrestage;
00271 int numPrestaging;
00272 int numWaitingCatalogRegistration;
00273 int numWaitingCatalogResolution;
00274 int numWaitingPrestage;
00275 };
00276
00277
00281 struct _glite_transfer_TransferParams
00282 {
00283 char **keys;
00284 char **values;
00285 unsigned num;
00286 };
00287
00291 struct _glite_transfer_ChannelAuditEntry
00292 {
00293 int auditID;
00294 char *channelName;
00295 char *contact;
00296 int nostreams;
00297 int nofiles;
00298 int bandwidth;
00299 char *tcpBufferSize;
00300 int nominalThroughput;
00301 glite_channel_state channelState;
00302 char *message;
00303 time_t modificationTime;
00304 char *adminDN;
00305 char *ftsNode;
00306 char *clientIP;
00307 };
00308
00309
00313 struct _glite_transfer_Channel
00314 {
00315 char *channelName;
00316 char *sourceSite;
00317 char *destSite;
00318 char *contact;
00319 int numberOfStreams;
00320 int numberOfFiles;
00321 int bandwidth;
00322 int nominalThroughput;
00324 int __sizeVOShares;
00326 glite_transfer_VOShareElement **VOShares;
00327 glite_channel_state state;
00328 int urlCopyFirstTxmarkTo;
00329 int targetDirCheck;
00331 };
00332
00336 struct _glite_transfer_Channel2
00337 {
00338 char *channelName;
00339 char *sourceSite;
00340 char *destSite;
00341 char *contact;
00342 char *tcpBufferSize;
00343 char *lastModifierDn;
00344 char *message;
00345 time_t lastModificationTime;
00346 int numberOfStreams;
00347 int numberOfFiles;
00348 int bandwidth;
00349 int nominalThroughput;
00350 int __sizeVOShares;
00351 glite_transfer_VOShareElement **VOShares;
00352 int __sizeVOLimits;
00353 glite_transfer_VOLimitElement **VOLimits;
00354 glite_channel_state state;
00355 int urlCopyFirstTxmarkTo;
00356 int targetDirCheck;
00358 };
00359
00363 struct _glite_transfer_StringPair
00364 {
00365 char *string1;
00366 char *string2;
00367 };
00368
00372 struct _glite_transfer_Roles
00373 {
00374 char *clientDN;
00375 char *serviceAdmin;
00376 char *submitter;
00377 int __sizeVOManager;
00378 glite_transfer_StringPair **VOManager;
00379 int __sizechannelManager;
00380 glite_transfer_StringPair **channelManager;
00381 };
00382
00386 struct _glite_transfer_TransferSnapshot
00387 {
00388 time_t *time;
00389 int numSubmittedJobs;
00390 int numPendingJobs;
00391 int numActiveJobs;
00392 int numDoneJobs;
00393 int numHoldJobs;
00394 int numFailedJobs;
00395 int numCanceledJobs;
00396 int numCancelingJobs;
00397 int numFinishedDirtyJobs;
00398 int numFinishedJobs;
00399 int numSubmittedFiles;
00400 int numPendingFiles;
00401 int numActiveFiles;
00402 int numDoneFiles;
00403 int numWaitingFiles;
00404 int numHoldFiles;
00405 int numCancelingFiles;
00406 int numCanceledFiles;
00407 int numFailedFiles;
00408 int numFinishedFiles;
00409 int numCatalogFailedFiles;
00410 };
00411
00415 struct _glite_transfer_TransferSummary
00416 {
00417 char *channelName;
00418 char *voName;
00419 int __sizesnapshots;
00420 glite_transfer_TransferSnapshot **snapshots;
00421 };
00422
00426 struct _glite_transfer_TransferActivityPeriod
00427 {
00428 time_t *startTime;
00429 time_t *endTime;
00430 float averageRate;
00431 long bytesWritten;
00432 };
00433
00437 struct _glite_transfer_TransferActivity
00438 {
00439 char *channelName;
00440 char *voName;
00441 int __sizeactivityPeriods;
00442 glite_transfer_TransferActivityPeriod **activityPeriods;
00443 };
00444
00448 struct _glite_transfer_TransferAgent
00449 {
00450 char *name;
00451 char *DN;
00452 char *host;
00453 char *type;
00454 time_t *lastActive;
00455 char *state;
00456 char *version;
00457 char *contact;
00458 };
00459
00464
00465
00466
00467
00480 glite_transfer_ctx *glite_transfer_new(const char *endpoint);
00481
00487 void glite_transfer_free(glite_transfer_ctx *ctx);
00488
00496 void glite_transfer_add_sites(glite_transfer_ctx *ctx, const char *s, const char *d);
00497
00507 const char *glite_transfer_get_error(glite_transfer_ctx *ctx);
00508
00516 glite_transfer_errclass glite_transfer_get_errclass(glite_transfer_ctx *ctx);
00517
00526 void glite_transfer_set_error(glite_transfer_ctx *ctx,
00527 glite_transfer_errclass errclass, const char *fmt, ...);
00528
00537 void glite_transfer_set_verror(glite_transfer_ctx *ctx,
00538 glite_transfer_errclass errclass, const char *fmt, va_list ap);
00539
00549 glite_transfer_state glite_transfer_state_parse(glite_transfer_ctx *ctx,
00550 const char *state);
00551
00559 const char *glite_transfer_state_str(glite_transfer_state state);
00560
00561
00562
00563
00564
00565
00566
00567
00578 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_new(glite_transfer_ctx *ctx,
00579 const char *source, const char *dest, glite_transfer_state state);
00586 void glite_transfer_FileTransferStatus_free(glite_transfer_ctx *ctx,
00587 glite_transfer_FileTransferStatus *status);
00595 void glite_transfer_FileTransferStatus_freeArray(glite_transfer_ctx *ctx,
00596 int nitems, glite_transfer_FileTransferStatus *status[]);
00605 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_clone(glite_transfer_ctx *ctx,
00606 const glite_transfer_FileTransferStatus *status);
00616 int glite_transfer_FileTransferStatus_setLogicalName(glite_transfer_ctx *ctx,
00617 glite_transfer_FileTransferStatus *status, const char *name);
00627 int glite_transfer_FileTransferStatus_setReason(glite_transfer_ctx *ctx,
00628 glite_transfer_FileTransferStatus *status, const char *reason);
00638 int glite_transfer_FileTransferStatus_setReasonClass(glite_transfer_ctx *ctx,
00639 glite_transfer_FileTransferStatus *status, const char *reasonClass);
00640
00650 glite_transfer_JobStatus *glite_transfer_JobStatus_new(glite_transfer_ctx *ctx,
00651 const char *jobId, glite_transfer_state jobStatus);
00658 void glite_transfer_JobStatus_free(glite_transfer_ctx *ctx,
00659 glite_transfer_JobStatus *status);
00667 void glite_transfer_JobStatus_freeArray(glite_transfer_ctx *ctx, int nitems,
00668 glite_transfer_JobStatus *status[]);
00677 glite_transfer_JobStatus *glite_transfer_JobStatus_clone(glite_transfer_ctx *ctx,
00678 const glite_transfer_JobStatus *orig);
00679
00689 glite_transfer_PlacementJob *glite_transfer_PlacementJob_new(glite_transfer_ctx *ctx,
00690 const char *sourceSE, const char *destSE);
00697 void glite_transfer_PlacementJob_free(glite_transfer_ctx *ctx,
00698 glite_transfer_PlacementJob *job);
00707 glite_transfer_PlacementJob *glite_transfer_PlacementJob_clone(glite_transfer_ctx *ctx,
00708 const glite_transfer_PlacementJob *orig);
00718 int glite_transfer_PlacementJob_setParams(glite_transfer_ctx *ctx,
00719 glite_transfer_PlacementJob *job,
00720 const glite_transfer_TransferParams *params);
00730 int glite_transfer_PlacementJob_add(glite_transfer_ctx *ctx,
00731 glite_transfer_PlacementJob *job, const char *logicalFile);
00732
00742 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_new(glite_transfer_ctx *ctx,
00743 const char *src, const char *dst);
00750 void glite_transfer_TransferJobElement_free(glite_transfer_ctx *ctx,
00751 glite_transfer_TransferJobElement *elem);
00759 void glite_transfer_TransferJobElement_freeArray(glite_transfer_ctx *ctx,
00760 int nitems, glite_transfer_TransferJobElement *elems[]);
00769 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_clone(glite_transfer_ctx *ctx,
00770 const glite_transfer_TransferJobElement *orig);
00771
00779 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_new(glite_transfer_ctx *ctx);
00780 glite_transfer_TransferJobSummary2 *glite_transfer_TransferJobSummary2_new(glite_transfer_ctx *ctx);
00787 void glite_transfer_TransferJobSummary_free(glite_transfer_ctx *ctx,
00788 glite_transfer_TransferJobSummary *summary);
00789 void glite_transfer_TransferJobSummary2_free(glite_transfer_ctx *ctx,
00790 glite_transfer_TransferJobSummary2 *summary);
00791
00800 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_clone(glite_transfer_ctx *ctx,
00801 const glite_transfer_TransferJobSummary *orig);
00802 glite_transfer_TransferJobSummary2 *glite_transfer_TransferJobSummary2_clone(glite_transfer_ctx *ctx,
00803 const glite_transfer_TransferJobSummary2 *orig);
00804
00812 glite_transfer_TransferJob *glite_transfer_TransferJob_new(glite_transfer_ctx *ctx);
00819 void glite_transfer_TransferJob_free(glite_transfer_ctx *ctx,
00820 glite_transfer_TransferJob *job);
00829 glite_transfer_TransferJob *glite_transfer_TransferJob_clone(glite_transfer_ctx *ctx,
00830 const glite_transfer_TransferJob *orig);
00840 int glite_transfer_TransferJob_setParams(glite_transfer_ctx *ctx,
00841 glite_transfer_TransferJob *job,
00842 const glite_transfer_TransferParams *params);
00853 int glite_transfer_TransferJob_add(glite_transfer_ctx *ctx,
00854 glite_transfer_TransferJob *job,
00855 const char *src, const char *dst);
00856
00864 glite_transfer_TransferParams *glite_transfer_TransferParams_new(glite_transfer_ctx *ctx);
00871 void glite_transfer_TransferParams_free(glite_transfer_ctx *ctx,
00872 glite_transfer_TransferParams *params);
00881 glite_transfer_TransferParams *glite_transfer_TransferParams_clone(glite_transfer_ctx *ctx,
00882 const glite_transfer_TransferParams *orig);
00893 int glite_transfer_TransferParams_add(glite_transfer_ctx *ctx,
00894 glite_transfer_TransferParams *params, const char *key, const char *value);
00895
00906 glite_transfer_Channel *glite_transfer_Channel_new(glite_transfer_ctx *ctx,
00907 const char *name, const char *domainA, const char *domainB);
00908
00909 glite_transfer_Channel2 *glite_transfer_Channel2_new(glite_transfer_ctx *ctx,
00910 const char *name, const char *domainA, const char *domainB);
00911
00918 void glite_transfer_Channel_free(glite_transfer_ctx *ctx,
00919 glite_transfer_Channel *channel);
00920
00921 void glite_transfer_Channel2_free(glite_transfer_ctx *ctx,
00922 glite_transfer_Channel2 *channel2);
00923
00932 glite_transfer_Channel *glite_transfer_Channel_clone(glite_transfer_ctx *ctx,
00933 const glite_transfer_Channel *orig);
00934
00935 glite_transfer_Channel2 *glite_transfer_Channel2_clone(glite_transfer_ctx *ctx,
00936 const glite_transfer_Channel2 *orig);
00937
00947 int glite_transfer_Channel_setContact(glite_transfer_ctx *ctx,
00948 glite_transfer_Channel *channel, const char *contact);
00958 int glite_transfer_Channel_setState(glite_transfer_ctx *ctx,
00959 glite_transfer_Channel *channel, glite_channel_state state);
00960
00964 glite_transfer_Roles *glite_transfer_Roles_new(glite_transfer_ctx *ctx);
00965
00966
00967 void glite_transfer_ChannelAuditEntry_freeArray(glite_transfer_ctx *ctx,
00968 int nitems, glite_transfer_ChannelAuditEntry *ca[]);
00969
00970
00971 glite_transfer_ChannelAuditEntry *glite_transfer_ChannelAuditEntry_new(
00972 glite_transfer_ctx *ctx, const char *name);
00973
00974
00975 void glite_transfer_ChannelAuditEntry_free(glite_transfer_ctx *ctx,
00976 glite_transfer_ChannelAuditEntry *ca);
00977
00978
00979 glite_transfer_ChannelAuditEntry *glite_transfer_ChannelAuditEntry_clone(
00980 glite_transfer_ctx *ctx, const glite_transfer_ChannelAuditEntry *orig);
00981
00982 #ifdef __cplusplus
00983 }
00984 #endif
00985
00986 #endif