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 char *checksum;
00211 };
00212
00216 struct _glite_transfer_VOShareElement{
00217 char *VOName;
00218 char *share;
00219 };
00220
00224 struct _glite_transfer_VOLimitElement{
00225 char *VOName;
00226 char *limit;
00227 };
00228
00232 struct _glite_transfer_TransferJobSummary{
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 glite_transfer_JobStatus *jobStatus;
00255 int numDone;
00256 int numActive;
00257 int numPending;
00258 int numCanceled;
00259 int numCanceling;
00260 int numFailed;
00261 int numFinished;
00262 int numSubmitted;
00263 int numHold;
00264 int numWaiting;
00265 int numCatalogFailed;
00266 int numRestarted;
00267 int numReady;
00268 int numFinishing;
00269 int numAwaitingPrestage;
00270 int numPrestaging;
00271 int numWaitingCatalogRegistration;
00272 int numWaitingCatalogResolution;
00273 int numWaitingPrestage;
00274 };
00275
00276
00280 struct _glite_transfer_TransferParams{
00281 char **keys;
00282 char **values;
00283 unsigned num;
00284 };
00285
00289 struct _glite_transfer_ChannelAuditEntry{
00290 int auditID;
00291 char *channelName;
00292 char *contact;
00293 int nostreams;
00294 int nofiles;
00295 int bandwidth;
00296 char *tcpBufferSize;
00297 int nominalThroughput;
00298 glite_channel_state channelState;
00299 char *message;
00300 time_t modificationTime;
00301 char *adminDN;
00302 char *ftsNode;
00303 char *clientIP;
00304 };
00305
00306
00310 struct _glite_transfer_Channel{
00311 char *channelName;
00312 char *sourceSite;
00313 char *destSite;
00314 char *contact;
00315 int numberOfStreams;
00316 int numberOfFiles;
00317 int bandwidth;
00318 int nominalThroughput;
00319 int __sizeVOShares;
00320 glite_transfer_VOShareElement **VOShares;
00321 glite_channel_state state;
00322 int urlCopyFirstTxmarkTo;
00323 int targetDirCheck;
00324 };
00325
00329 struct _glite_transfer_Channel2{
00330 char *channelName;
00331 char *sourceSite;
00332 char *destSite;
00333 char *contact;
00334 char *tcpBufferSize;
00335 char *lastModifierDn;
00336 char *message;
00337 time_t lastModificationTime;
00338 int numberOfStreams;
00339 int numberOfFiles;
00340 int bandwidth;
00341 int nominalThroughput;
00342 int __sizeVOShares;
00343 glite_transfer_VOShareElement **VOShares;
00344 int __sizeVOLimits;
00345 glite_transfer_VOLimitElement **VOLimits;
00346 glite_channel_state state;
00347 int urlCopyFirstTxmarkTo;
00348 int targetDirCheck;
00349 };
00350
00354 struct _glite_transfer_Channel3{
00355 char *channelName;
00356 char *sourceSite;
00357 char *destSite;
00358 char *contact;
00359 char *tcpBufferSize;
00360 char *lastModifierDn;
00361 char *message;
00362 time_t lastModificationTime;
00363 int numberOfStreams;
00364 int numberOfFiles;
00365 int bandwidth;
00366 int nominalThroughput;
00367 int __sizeVOShares;
00368 glite_transfer_VOShareElement **VOShares;
00369 int __sizeVOLimits;
00370 glite_transfer_VOLimitElement **VOLimits;
00371 glite_channel_state state;
00372 int urlCopyFirstTxmarkTo;
00373 int targetDirCheck;
00374
00375 time_t lastActiveTime;
00376 int seLimit;
00377 char *channelType;
00378 char *blockSize;
00379 int httpTimeout;
00380 char *transferLogLevel;
00381 double preparingFilesRatio;
00382 char *transferType;
00383 int urlCopyPutTimeout;
00384 int urlCopyPutDoneTimeout;
00385 int urlCopyGetTimeout;
00386 int urlCopyGetDoneTimeout;
00387 int urlCopyTransferTimeout;
00388 int urlCopyTransferMarkersTimeout;
00389 int urlCopyNoProgressTimeout;
00390 double urlCopyTransferTimeoutPerMB;
00391 char *srmCopyDirection;
00392 int srmCopyTimeout;
00393 int srmCopyRefreshTimeout;
00394 };
00395
00396
00400 struct _glite_transfer_StringPair{
00401 char *string1;
00402 char *string2;
00403 };
00404
00408 struct _glite_transfer_Roles{
00409 char *clientDN;
00410 char *serviceAdmin;
00411 char *submitter;
00412 int __sizeVOManager;
00413 glite_transfer_StringPair **VOManager;
00414 int __sizechannelManager;
00415 glite_transfer_StringPair **channelManager;
00416 };
00417
00421 struct _glite_transfer_TransferSnapshot{
00422 time_t *time;
00423 int numSubmittedJobs;
00424 int numPendingJobs;
00425 int numActiveJobs;
00426 int numDoneJobs;
00427 int numHoldJobs;
00428 int numFailedJobs;
00429 int numCanceledJobs;
00430 int numCancelingJobs;
00431 int numFinishedDirtyJobs;
00432 int numFinishedJobs;
00433 int numSubmittedFiles;
00434 int numPendingFiles;
00435 int numActiveFiles;
00436 int numDoneFiles;
00437 int numWaitingFiles;
00438 int numHoldFiles;
00439 int numCancelingFiles;
00440 int numCanceledFiles;
00441 int numFailedFiles;
00442 int numFinishedFiles;
00443 int numCatalogFailedFiles;
00444 };
00445
00449 struct _glite_transfer_TransferSummary{
00450 char *channelName;
00451 char *voName;
00452 int __sizesnapshots;
00453 glite_transfer_TransferSnapshot **snapshots;
00454 };
00455
00459 struct _glite_transfer_TransferActivityPeriod{
00460 time_t *startTime;
00461 time_t *endTime;
00462 float averageRate;
00463 long bytesWritten;
00464 };
00465
00469 struct _glite_transfer_TransferActivity{
00470 char *channelName;
00471 char *voName;
00472 int __sizeactivityPeriods;
00473 glite_transfer_TransferActivityPeriod **activityPeriods;
00474 };
00475
00479 struct _glite_transfer_TransferAgent{
00480 char *name;
00481 char *DN;
00482 char *host;
00483 char *type;
00484 time_t *lastActive;
00485 char *state;
00486 char *version;
00487 char *contact;
00488 };
00489
00494
00495
00496
00497
00508 glite_transfer_ctx *glite_transfer_new(const char *endpoint);
00509
00514 void glite_transfer_free(glite_transfer_ctx *ctx);
00515
00522 void glite_transfer_add_sites(glite_transfer_ctx *ctx, const char *s, const char *d);
00523
00531 const char *glite_transfer_get_error(glite_transfer_ctx *ctx);
00532
00538 glite_transfer_errclass glite_transfer_get_errclass(glite_transfer_ctx *ctx);
00539
00547 void glite_transfer_set_error(glite_transfer_ctx *ctx,
00548 glite_transfer_errclass errclass, const char *fmt, ...);
00549
00557 void glite_transfer_set_verror(glite_transfer_ctx *ctx,
00558 glite_transfer_errclass errclass, const char *fmt, va_list ap);
00559
00567 glite_transfer_state glite_transfer_state_parse(glite_transfer_ctx *ctx,
00568 const char *state);
00569
00575 const char *glite_transfer_state_str(glite_transfer_state state);
00576
00577
00578
00579
00580
00581
00582
00583
00592 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_new(glite_transfer_ctx *ctx,
00593 const char *source, const char *dest, glite_transfer_state state);
00599 void glite_transfer_FileTransferStatus_free(glite_transfer_ctx *ctx,
00600 glite_transfer_FileTransferStatus *status);
00607 void glite_transfer_FileTransferStatus_freeArray(glite_transfer_ctx *ctx,
00608 int nitems, glite_transfer_FileTransferStatus *status[]);
00615 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_clone(glite_transfer_ctx *ctx,
00616 const glite_transfer_FileTransferStatus *status);
00624 int glite_transfer_FileTransferStatus_setLogicalName(glite_transfer_ctx *ctx,
00625 glite_transfer_FileTransferStatus *status, const char *name);
00633 int glite_transfer_FileTransferStatus_setReason(glite_transfer_ctx *ctx,
00634 glite_transfer_FileTransferStatus *status, const char *reason);
00642 int glite_transfer_FileTransferStatus_setReasonClass(glite_transfer_ctx *ctx,
00643 glite_transfer_FileTransferStatus *status, const char *reasonClass);
00644
00652 glite_transfer_JobStatus *glite_transfer_JobStatus_new(glite_transfer_ctx *ctx,
00653 const char *jobId, glite_transfer_state jobStatus);
00659 void glite_transfer_JobStatus_free(glite_transfer_ctx *ctx,
00660 glite_transfer_JobStatus *status);
00667 void glite_transfer_JobStatus_freeArray(glite_transfer_ctx *ctx, int nitems,
00668 glite_transfer_JobStatus *status[]);
00675 glite_transfer_JobStatus *glite_transfer_JobStatus_clone(glite_transfer_ctx *ctx,
00676 const glite_transfer_JobStatus *orig);
00677
00685 glite_transfer_PlacementJob *glite_transfer_PlacementJob_new(glite_transfer_ctx *ctx,
00686 const char *sourceSE, const char *destSE);
00692 void glite_transfer_PlacementJob_free(glite_transfer_ctx *ctx,
00693 glite_transfer_PlacementJob *job);
00700 glite_transfer_PlacementJob *glite_transfer_PlacementJob_clone(glite_transfer_ctx *ctx,
00701 const glite_transfer_PlacementJob *orig);
00709 int glite_transfer_PlacementJob_setParams(glite_transfer_ctx *ctx,
00710 glite_transfer_PlacementJob *job,
00711 const glite_transfer_TransferParams *params);
00719 int glite_transfer_PlacementJob_add(glite_transfer_ctx *ctx,
00720 glite_transfer_PlacementJob *job, const char *logicalFile);
00721
00729 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_new(glite_transfer_ctx *ctx,
00730 const char *src, const char *dst, const char *cksm);
00736 void glite_transfer_TransferJobElement_free(glite_transfer_ctx *ctx,
00737 glite_transfer_TransferJobElement *elem);
00744 void glite_transfer_TransferJobElement_freeArray(glite_transfer_ctx *ctx,
00745 int nitems, glite_transfer_TransferJobElement *elems[]);
00752 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_clone(glite_transfer_ctx *ctx,
00753 const glite_transfer_TransferJobElement *orig);
00754
00760 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_new(glite_transfer_ctx *ctx);
00761 glite_transfer_TransferJobSummary2 *glite_transfer_TransferJobSummary2_new(glite_transfer_ctx *ctx);
00767 void glite_transfer_TransferJobSummary_free(glite_transfer_ctx *ctx,
00768 glite_transfer_TransferJobSummary *summary);
00769 void glite_transfer_TransferJobSummary2_free(glite_transfer_ctx *ctx,
00770 glite_transfer_TransferJobSummary2 *summary);
00771
00778 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_clone(glite_transfer_ctx *ctx,
00779 const glite_transfer_TransferJobSummary *orig);
00780 glite_transfer_TransferJobSummary2 *glite_transfer_TransferJobSummary2_clone(glite_transfer_ctx *ctx,
00781 const glite_transfer_TransferJobSummary2 *orig);
00782
00788 glite_transfer_TransferJob *glite_transfer_TransferJob_new(glite_transfer_ctx *ctx);
00794 void glite_transfer_TransferJob_free(glite_transfer_ctx *ctx,
00795 glite_transfer_TransferJob *job);
00802 glite_transfer_TransferJob *glite_transfer_TransferJob_clone(glite_transfer_ctx *ctx,
00803 const glite_transfer_TransferJob *orig);
00811 int glite_transfer_TransferJob_setParams(glite_transfer_ctx *ctx,
00812 glite_transfer_TransferJob *job,
00813 const glite_transfer_TransferParams *params);
00822 int glite_transfer_TransferJob_add(glite_transfer_ctx *ctx,
00823 glite_transfer_TransferJob *job,
00824 const char *src, const char *dst, const char *cksm);
00825
00831 glite_transfer_TransferParams *glite_transfer_TransferParams_new(glite_transfer_ctx *ctx);
00837 void glite_transfer_TransferParams_free(glite_transfer_ctx *ctx,
00838 glite_transfer_TransferParams *params);
00845 glite_transfer_TransferParams *glite_transfer_TransferParams_clone(glite_transfer_ctx *ctx,
00846 const glite_transfer_TransferParams *orig);
00855 int glite_transfer_TransferParams_add(glite_transfer_ctx *ctx,
00856 glite_transfer_TransferParams *params, const char *key, const char *value);
00857
00866 glite_transfer_Channel *glite_transfer_Channel_new(glite_transfer_ctx *ctx,
00867 const char *name, const char *domainA, const char *domainB);
00868
00869 glite_transfer_Channel2 *glite_transfer_Channel2_new(glite_transfer_ctx *ctx,
00870 const char *name, const char *domainA, const char *domainB);
00871
00872 glite_transfer_Channel3 *glite_transfer_Channel3_new(
00873 glite_transfer_ctx *ctx,
00874 const char *name,
00875 const char *domainA,
00876 const char *domainB);
00877
00883 void glite_transfer_Channel_free(
00884 glite_transfer_ctx *ctx,
00885 glite_transfer_Channel *channel);
00886
00887 void glite_transfer_Channel2_free(
00888 glite_transfer_ctx *ctx,
00889 glite_transfer_Channel2 *channel2);
00890
00891 void glite_transfer_Channel3_free(
00892 glite_transfer_ctx *ctx,
00893 glite_transfer_Channel3 *channel3);
00894
00901 glite_transfer_Channel *glite_transfer_Channel_clone(glite_transfer_ctx *ctx,
00902 const glite_transfer_Channel *orig);
00903
00904 glite_transfer_Channel2 *glite_transfer_Channel2_clone(glite_transfer_ctx *ctx,
00905 const glite_transfer_Channel2 *orig);
00906
00914 int glite_transfer_Channel_setContact(glite_transfer_ctx *ctx,
00915 glite_transfer_Channel *channel, const char *contact);
00923 int glite_transfer_Channel_setState(glite_transfer_ctx *ctx,
00924 glite_transfer_Channel *channel, glite_channel_state state);
00925
00929 glite_transfer_Roles *glite_transfer_Roles_new(glite_transfer_ctx *ctx);
00930
00931
00932 void glite_transfer_ChannelAuditEntry_freeArray(glite_transfer_ctx *ctx,
00933 int nitems, glite_transfer_ChannelAuditEntry *ca[]);
00934
00935
00936 glite_transfer_ChannelAuditEntry *glite_transfer_ChannelAuditEntry_new(
00937 glite_transfer_ctx *ctx, const char *name);
00938
00939
00940 void glite_transfer_ChannelAuditEntry_free(glite_transfer_ctx *ctx,
00941 glite_transfer_ChannelAuditEntry *ca);
00942
00943
00944 glite_transfer_ChannelAuditEntry *glite_transfer_ChannelAuditEntry_clone(
00945 glite_transfer_ctx *ctx, const glite_transfer_ChannelAuditEntry *orig);
00946
00947 #ifdef __cplusplus
00948 }
00949 #endif
00950
00951 #endif