00001
00021 #ifndef GLITE_DATA_TRANSFER_SIMPLE_H
00022 #define GLITE_DATA_TRANSFER_SIMPLE_H
00023
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027
00028 #include <stdarg.h>
00029 #include <stdint.h>
00030 #include <time.h>
00031
00032
00033 #define GLITE_FTS_IFC_VERSION "GLITE_FTS_IFC_VERSION"
00034
00035
00036
00037
00038
00039
00040 typedef struct _glite_transfer_ctx glite_transfer_ctx;
00041
00046 typedef struct _glite_transfer_Channel glite_transfer_Channel;
00047 typedef struct _glite_transfer_Channel2 glite_transfer_Channel2;
00048 typedef struct _glite_transfer_Channel3 glite_transfer_Channel3;
00049 typedef struct _glite_transfer_ChannelAuditEntry glite_transfer_ChannelAuditEntry;
00050 typedef struct _glite_transfer_FileTransferStatus glite_transfer_FileTransferStatus;
00051 typedef struct _glite_transfer_JobStatus glite_transfer_JobStatus;
00052 typedef struct _glite_transfer_PlacementJob glite_transfer_PlacementJob;
00053 typedef struct _glite_transfer_TransferJob glite_transfer_TransferJob;
00054 typedef struct _glite_transfer_TransferJobElement glite_transfer_TransferJobElement;
00055 typedef struct _glite_transfer_TransferJobSummary glite_transfer_TransferJobSummary;
00056 typedef struct _glite_transfer_TransferJobSummary2 glite_transfer_TransferJobSummary2;
00057 typedef struct _glite_transfer_TransferParams glite_transfer_TransferParams;
00058 typedef struct _glite_transfer_StringPair glite_transfer_StringPair;
00059 typedef struct _glite_transfer_Roles glite_transfer_Roles;
00060 typedef struct _glite_transfer_VOShareElement glite_transfer_VOShareElement;
00061 typedef struct _glite_transfer_VOLimitElement glite_transfer_VOLimitElement;
00062
00063 typedef struct _glite_transfer_TransferSnapshot glite_transfer_TransferSnapshot;
00064 typedef struct _glite_transfer_TransferSummary glite_transfer_TransferSummary;
00065 typedef struct _glite_transfer_TransferActivity glite_transfer_TransferActivity;
00066 typedef struct _glite_transfer_TransferActivityPeriod glite_transfer_TransferActivityPeriod;
00067 typedef struct _glite_transfer_TransferAgent glite_transfer_TransferAgent;
00068
00069
00070
00071
00072
00073
00077 typedef enum{
00078 GLITE_TRANSFER_EXCEPTION_EXISTS = -9,
00079 GLITE_TRANSFER_EXCEPTION_AUTHORIZATION = -8,
00080 GLITE_TRANSFER_EXCEPTION_CANNOTCANCEL = -7,
00081 GLITE_TRANSFER_EXCEPTION_FILENOTFOUND = -6,
00082 GLITE_TRANSFER_EXCEPTION_INTERNAL = -5,
00083 GLITE_TRANSFER_EXCEPTION_INVALIDARGUMENT = -4,
00084 GLITE_TRANSFER_EXCEPTION_NOTEXISTS = -3,
00085 GLITE_TRANSFER_EXCEPTION_SERVICEBUSY = -2,
00086 GLITE_TRANSFER_EXCEPTION_TRANSFER = -1,
00087 GLITE_TRANSFER_ERROR_NONE,
00088 GLITE_TRANSFER_ERROR_UNKNOWN,
00089 GLITE_TRANSFER_ERROR_INVALIDARGUMENT,
00090 GLITE_TRANSFER_ERROR_OUTOFMEMORY,
00091 GLITE_TRANSFER_ERROR_SERVICEDISCOVERY,
00092 GLITE_TRANSFER_ERROR_SOAP
00093 } glite_transfer_errclass;
00094
00101 typedef enum{
00102 GLITE_TRANSFER_FAILED = -6,
00103 GLITE_TRANSFER_CATALOGFAILED = -5,
00104 GLITE_TRANSFER_FINISHED_DIRTY = -4,
00105 GLITE_TRANSFER_UNKNOWN = -3,
00106 GLITE_TRANSFER_CANCELED = -2,
00107 GLITE_TRANSFER_TRANSFERFAILED = -1,
00108 GLITE_TRANSFER_FINISHED = 0,
00109 GLITE_TRANSFER_SUBMITTED,
00110 GLITE_TRANSFER_PENDING,
00111 GLITE_TRANSFER_ACTIVE,
00112 GLITE_TRANSFER_CANCELING,
00113 GLITE_TRANSFER_WAITING,
00114 GLITE_TRANSFER_HOLD,
00115 GLITE_TRANSFER_DONE,
00116 GLITE_TRANSFER_READY,
00117 GLITE_TRANSFER_DONEWITHERRORS,
00118 GLITE_TRANSFER_FINISHING,
00119 GLITE_TRANSFER_AWAITING_PRESTAGE,
00120 GLITE_TRANSFER_PRESTAGING,
00121 GLITE_TRANSFER_WAITING_PRESTAGE,
00122 GLITE_TRANSFER_WAITING_CATALOG_RESOLUTION,
00123 GLITE_TRANSFER_WAITING_CATALOG_REGISTRATION
00124 } glite_transfer_state;
00125
00129 typedef enum{
00130 GLITE_CHANNEL_UNKNOWN = -1,
00131 GLITE_CHANNEL_ACTIVE,
00132 GLITE_CHANNEL_INACTIVE,
00133 GLITE_CHANNEL_DRAIN,
00134 GLITE_CHANNEL_STOPPED,
00135 GLITE_CHANNEL_HALTED,
00136 GLITE_CHANNEL_ARCHIVED,
00137 GLITE_CHANNEL_DELETED
00138 } glite_channel_state;
00139
00140
00141
00142
00143
00144
00148 struct _glite_transfer_FileTransferStatus{
00149 char *logicalName;
00150 char *sourceSURL;
00151 char *destSURL;
00152 glite_transfer_state transferFileState;
00153 int numFailures;
00154 char *reason;
00155 char *reason_class;
00156 int duration;
00157 };
00158
00162 struct _glite_transfer_JobStatus{
00163 char *jobId;
00164 glite_transfer_state jobStatus;
00165 char *channelName;
00166 char *clientDN;
00167 char *reason;
00168 char *voName;
00169 struct timespec submitTime;
00170 int numFiles;
00171 int priority;
00172 };
00173
00185 struct _glite_transfer_PlacementJob{
00186 char **logicalFiles;
00187 unsigned __sizeLogicalFiles;
00188 char *sourceSE;
00189 char *destSE;
00190 glite_transfer_TransferParams *jobParams;
00191 char *credential;
00192 };
00193
00197 struct _glite_transfer_TransferJob{
00198 glite_transfer_TransferJobElement **transferJobElements;
00199 unsigned __sizetransferJobElements;
00200 glite_transfer_TransferParams *jobParams;
00201 char *credential;
00202 };
00203
00207 struct _glite_transfer_TransferJobElement{
00208 char *source;
00209 char *dest;
00210 };
00211
00215 struct _glite_transfer_VOShareElement{
00216 char *VOName;
00217 char *share;
00218 };
00219
00223 struct _glite_transfer_VOLimitElement{
00224 char *VOName;
00225 char *limit;
00226 };
00227
00231 struct _glite_transfer_TransferJobSummary{
00232 glite_transfer_JobStatus *jobStatus;
00234 int numDone;
00235 int numActive;
00236 int numPending;
00237 int numCanceled;
00238 int numCanceling;
00239 int numFailed;
00240 int numFinished;
00241 int numSubmitted;
00242 int numHold;
00243 int numWaiting;
00244 int numCatalogFailed;
00245 int numRestarted;
00246 };
00247
00251 struct _glite_transfer_TransferJobSummary2{
00252 glite_transfer_JobStatus *jobStatus;
00254 int numDone;
00255 int numActive;
00256 int numPending;
00257 int numCanceled;
00258 int numCanceling;
00259 int numFailed;
00260 int numFinished;
00261 int numSubmitted;
00262 int numHold;
00263 int numWaiting;
00264 int numCatalogFailed;
00265 int numRestarted;
00266 int numReady;
00267 int numFinishing;
00268 int numAwaitingPrestage;
00269 int numPrestaging;
00270 int numWaitingCatalogRegistration;
00271 int numWaitingCatalogResolution;
00272 int numWaitingPrestage;
00273 };
00274
00275
00279 struct _glite_transfer_TransferParams{
00280 char **keys;
00281 char **values;
00282 unsigned num;
00283 };
00284
00288 struct _glite_transfer_ChannelAuditEntry{
00289 int auditID;
00290 char *channelName;
00291 char *contact;
00292 int nostreams;
00293 int nofiles;
00294 int bandwidth;
00295 char *tcpBufferSize;
00296 int nominalThroughput;
00297 glite_channel_state channelState;
00298 char *message;
00299 time_t modificationTime;
00300 char *adminDN;
00301 char *ftsNode;
00302 char *clientIP;
00303 };
00304
00305
00309 struct _glite_transfer_Channel{
00310 char *channelName;
00311 char *sourceSite;
00312 char *destSite;
00313 char *contact;
00314 int numberOfStreams;
00315 int numberOfFiles;
00316 int bandwidth;
00317 int nominalThroughput;
00318 int __sizeVOShares;
00319 glite_transfer_VOShareElement **VOShares;
00320 glite_channel_state state;
00321 int urlCopyFirstTxmarkTo;
00322 int targetDirCheck;
00323 };
00324
00328 struct _glite_transfer_Channel2{
00329 char *channelName;
00330 char *sourceSite;
00331 char *destSite;
00332 char *contact;
00333 char *tcpBufferSize;
00334 char *lastModifierDn;
00335 char *message;
00336 time_t lastModificationTime;
00337 int numberOfStreams;
00338 int numberOfFiles;
00339 int bandwidth;
00340 int nominalThroughput;
00341 int __sizeVOShares;
00342 glite_transfer_VOShareElement **VOShares;
00343 int __sizeVOLimits;
00344 glite_transfer_VOLimitElement **VOLimits;
00345 glite_channel_state state;
00346 int urlCopyFirstTxmarkTo;
00347 int targetDirCheck;
00348 };
00349
00353 struct _glite_transfer_Channel3{
00354 char *channelName;
00355 char *sourceSite;
00356 char *destSite;
00357 char *contact;
00358 char *tcpBufferSize;
00359 char *lastModifierDn;
00360 char *message;
00361 time_t lastModificationTime;
00362 int numberOfStreams;
00363 int numberOfFiles;
00364 int bandwidth;
00365 int nominalThroughput;
00366 int __sizeVOShares;
00367 glite_transfer_VOShareElement **VOShares;
00368 int __sizeVOLimits;
00369 glite_transfer_VOLimitElement **VOLimits;
00370 glite_channel_state state;
00371 int urlCopyFirstTxmarkTo;
00372 int targetDirCheck;
00373
00374 time_t lastActiveTime;
00375 int seLimit;
00376 char *channelType;
00377 char *blockSize;
00378 int httpTimeout;
00379 char *transferLogLevel;
00380 double preparingFilesRatio;
00381 char *transferType;
00382 int urlCopyPutTimeout;
00383 int urlCopyPutDoneTimeout;
00384 int urlCopyGetTimeout;
00385 int urlCopyGetDoneTimeout;
00386 int urlCopyTransferTimeout;
00387 int urlCopyTransferMarkersTimeout;
00388 int urlCopyNoProgressTimeout;
00389 double urlCopyTransferTimeoutPerMB;
00390 char *srmCopyDirection;
00391 int srmCopyTimeout;
00392 int srmCopyRefreshTimeout;
00393 };
00394
00395
00399 struct _glite_transfer_StringPair{
00400 char *string1;
00401 char *string2;
00402 };
00403
00407 struct _glite_transfer_Roles{
00408 char *clientDN;
00409 char *serviceAdmin;
00410 char *submitter;
00411 int __sizeVOManager;
00412 glite_transfer_StringPair **VOManager;
00413 int __sizechannelManager;
00414 glite_transfer_StringPair **channelManager;
00415 };
00416
00420 struct _glite_transfer_TransferSnapshot{
00421 time_t *time;
00422 int numSubmittedJobs;
00423 int numPendingJobs;
00424 int numActiveJobs;
00425 int numDoneJobs;
00426 int numHoldJobs;
00427 int numFailedJobs;
00428 int numCanceledJobs;
00429 int numCancelingJobs;
00430 int numFinishedDirtyJobs;
00431 int numFinishedJobs;
00432 int numSubmittedFiles;
00433 int numPendingFiles;
00434 int numActiveFiles;
00435 int numDoneFiles;
00436 int numWaitingFiles;
00437 int numHoldFiles;
00438 int numCancelingFiles;
00439 int numCanceledFiles;
00440 int numFailedFiles;
00441 int numFinishedFiles;
00442 int numCatalogFailedFiles;
00443 };
00444
00448 struct _glite_transfer_TransferSummary{
00449 char *channelName;
00450 char *voName;
00451 int __sizesnapshots;
00452 glite_transfer_TransferSnapshot **snapshots;
00453 };
00454
00458 struct _glite_transfer_TransferActivityPeriod{
00459 time_t *startTime;
00460 time_t *endTime;
00461 float averageRate;
00462 long bytesWritten;
00463 };
00464
00468 struct _glite_transfer_TransferActivity{
00469 char *channelName;
00470 char *voName;
00471 int __sizeactivityPeriods;
00472 glite_transfer_TransferActivityPeriod **activityPeriods;
00473 };
00474
00478 struct _glite_transfer_TransferAgent{
00479 char *name;
00480 char *DN;
00481 char *host;
00482 char *type;
00483 time_t *lastActive;
00484 char *state;
00485 char *version;
00486 char *contact;
00487 };
00488
00493
00494
00495
00496
00507 glite_transfer_ctx *glite_transfer_new(const char *endpoint);
00508
00513 void glite_transfer_free(glite_transfer_ctx *ctx);
00514
00521 void glite_transfer_add_sites(glite_transfer_ctx *ctx, const char *s, const char *d);
00522
00530 const char *glite_transfer_get_error(glite_transfer_ctx *ctx);
00531
00537 glite_transfer_errclass glite_transfer_get_errclass(glite_transfer_ctx *ctx);
00538
00546 void glite_transfer_set_error(glite_transfer_ctx *ctx,
00547 glite_transfer_errclass errclass, const char *fmt, ...);
00548
00556 void glite_transfer_set_verror(glite_transfer_ctx *ctx,
00557 glite_transfer_errclass errclass, const char *fmt, va_list ap);
00558
00566 glite_transfer_state glite_transfer_state_parse(glite_transfer_ctx *ctx,
00567 const char *state);
00568
00574 const char *glite_transfer_state_str(glite_transfer_state state);
00575
00576
00577
00578
00579
00580
00581
00582
00591 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_new(glite_transfer_ctx *ctx,
00592 const char *source, const char *dest, glite_transfer_state state);
00598 void glite_transfer_FileTransferStatus_free(glite_transfer_ctx *ctx,
00599 glite_transfer_FileTransferStatus *status);
00606 void glite_transfer_FileTransferStatus_freeArray(glite_transfer_ctx *ctx,
00607 int nitems, glite_transfer_FileTransferStatus *status[]);
00614 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_clone(glite_transfer_ctx *ctx,
00615 const glite_transfer_FileTransferStatus *status);
00623 int glite_transfer_FileTransferStatus_setLogicalName(glite_transfer_ctx *ctx,
00624 glite_transfer_FileTransferStatus *status, const char *name);
00632 int glite_transfer_FileTransferStatus_setReason(glite_transfer_ctx *ctx,
00633 glite_transfer_FileTransferStatus *status, const char *reason);
00641 int glite_transfer_FileTransferStatus_setReasonClass(glite_transfer_ctx *ctx,
00642 glite_transfer_FileTransferStatus *status, const char *reasonClass);
00643
00651 glite_transfer_JobStatus *glite_transfer_JobStatus_new(glite_transfer_ctx *ctx,
00652 const char *jobId, glite_transfer_state jobStatus);
00658 void glite_transfer_JobStatus_free(glite_transfer_ctx *ctx,
00659 glite_transfer_JobStatus *status);
00666 void glite_transfer_JobStatus_freeArray(glite_transfer_ctx *ctx, int nitems,
00667 glite_transfer_JobStatus *status[]);
00674 glite_transfer_JobStatus *glite_transfer_JobStatus_clone(glite_transfer_ctx *ctx,
00675 const glite_transfer_JobStatus *orig);
00676
00684 glite_transfer_PlacementJob *glite_transfer_PlacementJob_new(glite_transfer_ctx *ctx,
00685 const char *sourceSE, const char *destSE);
00691 void glite_transfer_PlacementJob_free(glite_transfer_ctx *ctx,
00692 glite_transfer_PlacementJob *job);
00699 glite_transfer_PlacementJob *glite_transfer_PlacementJob_clone(glite_transfer_ctx *ctx,
00700 const glite_transfer_PlacementJob *orig);
00708 int glite_transfer_PlacementJob_setParams(glite_transfer_ctx *ctx,
00709 glite_transfer_PlacementJob *job,
00710 const glite_transfer_TransferParams *params);
00718 int glite_transfer_PlacementJob_add(glite_transfer_ctx *ctx,
00719 glite_transfer_PlacementJob *job, const char *logicalFile);
00720
00728 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_new(glite_transfer_ctx *ctx,
00729 const char *src, const char *dst);
00735 void glite_transfer_TransferJobElement_free(glite_transfer_ctx *ctx,
00736 glite_transfer_TransferJobElement *elem);
00743 void glite_transfer_TransferJobElement_freeArray(glite_transfer_ctx *ctx,
00744 int nitems, glite_transfer_TransferJobElement *elems[]);
00751 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_clone(glite_transfer_ctx *ctx,
00752 const glite_transfer_TransferJobElement *orig);
00753
00759 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_new(glite_transfer_ctx *ctx);
00760 glite_transfer_TransferJobSummary2 *glite_transfer_TransferJobSummary2_new(glite_transfer_ctx *ctx);
00766 void glite_transfer_TransferJobSummary_free(glite_transfer_ctx *ctx,
00767 glite_transfer_TransferJobSummary *summary);
00768 void glite_transfer_TransferJobSummary2_free(glite_transfer_ctx *ctx,
00769 glite_transfer_TransferJobSummary2 *summary);
00770
00777 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_clone(glite_transfer_ctx *ctx,
00778 const glite_transfer_TransferJobSummary *orig);
00779 glite_transfer_TransferJobSummary2 *glite_transfer_TransferJobSummary2_clone(glite_transfer_ctx *ctx,
00780 const glite_transfer_TransferJobSummary2 *orig);
00781
00787 glite_transfer_TransferJob *glite_transfer_TransferJob_new(glite_transfer_ctx *ctx);
00793 void glite_transfer_TransferJob_free(glite_transfer_ctx *ctx,
00794 glite_transfer_TransferJob *job);
00801 glite_transfer_TransferJob *glite_transfer_TransferJob_clone(glite_transfer_ctx *ctx,
00802 const glite_transfer_TransferJob *orig);
00810 int glite_transfer_TransferJob_setParams(glite_transfer_ctx *ctx,
00811 glite_transfer_TransferJob *job,
00812 const glite_transfer_TransferParams *params);
00821 int glite_transfer_TransferJob_add(glite_transfer_ctx *ctx,
00822 glite_transfer_TransferJob *job,
00823 const char *src, const char *dst);
00824
00830 glite_transfer_TransferParams *glite_transfer_TransferParams_new(glite_transfer_ctx *ctx);
00836 void glite_transfer_TransferParams_free(glite_transfer_ctx *ctx,
00837 glite_transfer_TransferParams *params);
00844 glite_transfer_TransferParams *glite_transfer_TransferParams_clone(glite_transfer_ctx *ctx,
00845 const glite_transfer_TransferParams *orig);
00854 int glite_transfer_TransferParams_add(glite_transfer_ctx *ctx,
00855 glite_transfer_TransferParams *params, const char *key, const char *value);
00856
00865 glite_transfer_Channel *glite_transfer_Channel_new(glite_transfer_ctx *ctx,
00866 const char *name, const char *domainA, const char *domainB);
00867
00868 glite_transfer_Channel2 *glite_transfer_Channel2_new(glite_transfer_ctx *ctx,
00869 const char *name, const char *domainA, const char *domainB);
00870
00871 glite_transfer_Channel3 *glite_transfer_Channel3_new(
00872 glite_transfer_ctx *ctx,
00873 const char *name,
00874 const char *domainA,
00875 const char *domainB);
00876
00882 void glite_transfer_Channel_free(
00883 glite_transfer_ctx *ctx,
00884 glite_transfer_Channel *channel);
00885
00886 void glite_transfer_Channel2_free(
00887 glite_transfer_ctx *ctx,
00888 glite_transfer_Channel2 *channel2);
00889
00890 void glite_transfer_Channel3_free(
00891 glite_transfer_ctx *ctx,
00892 glite_transfer_Channel3 *channel3);
00893
00900 glite_transfer_Channel *glite_transfer_Channel_clone(glite_transfer_ctx *ctx,
00901 const glite_transfer_Channel *orig);
00902
00903 glite_transfer_Channel2 *glite_transfer_Channel2_clone(glite_transfer_ctx *ctx,
00904 const glite_transfer_Channel2 *orig);
00905
00913 int glite_transfer_Channel_setContact(glite_transfer_ctx *ctx,
00914 glite_transfer_Channel *channel, const char *contact);
00922 int glite_transfer_Channel_setState(glite_transfer_ctx *ctx,
00923 glite_transfer_Channel *channel, glite_channel_state state);
00924
00928 glite_transfer_Roles *glite_transfer_Roles_new(glite_transfer_ctx *ctx);
00929
00930
00931 void glite_transfer_ChannelAuditEntry_freeArray(glite_transfer_ctx *ctx,
00932 int nitems, glite_transfer_ChannelAuditEntry *ca[]);
00933
00934
00935 glite_transfer_ChannelAuditEntry *glite_transfer_ChannelAuditEntry_new(
00936 glite_transfer_ctx *ctx, const char *name);
00937
00938
00939 void glite_transfer_ChannelAuditEntry_free(glite_transfer_ctx *ctx,
00940 glite_transfer_ChannelAuditEntry *ca);
00941
00942
00943 glite_transfer_ChannelAuditEntry *glite_transfer_ChannelAuditEntry_clone(
00944 glite_transfer_ctx *ctx, const glite_transfer_ChannelAuditEntry *orig);
00945
00946 #ifdef __cplusplus
00947 }
00948 #endif
00949
00950 #endif