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;
00323 int __sizeVOShares;
00324 glite_transfer_VOShareElement **VOShares;
00325 glite_channel_state state;
00326 };
00327
00331 struct _glite_transfer_Channel2
00332 {
00333 char *channelName;
00334 char *sourceSite;
00335 char *destSite;
00336 char *contact;
00337 char *tcpBufferSize;
00338 char *lastModifierDn;
00339 char *message;
00340 time_t lastModificationTime;
00341 int numberOfStreams;
00342 int numberOfFiles;
00343 int bandwidth;
00344 int nominalThroughput;
00345 int __sizeVOShares;
00346 glite_transfer_VOShareElement **VOShares;
00347 int __sizeVOLimits;
00348 glite_transfer_VOLimitElement **VOLimits;
00349 glite_channel_state state;
00350 };
00351
00355 struct _glite_transfer_StringPair
00356 {
00357 char *string1;
00358 char *string2;
00359 };
00360
00364 struct _glite_transfer_Roles
00365 {
00366 char *clientDN;
00367 char *serviceAdmin;
00368 char *submitter;
00369 int __sizeVOManager;
00370 glite_transfer_StringPair **VOManager;
00371 int __sizechannelManager;
00372 glite_transfer_StringPair **channelManager;
00373 };
00374
00378 struct _glite_transfer_TransferSnapshot
00379 {
00380 time_t *time;
00381 int numSubmittedJobs;
00382 int numPendingJobs;
00383 int numActiveJobs;
00384 int numDoneJobs;
00385 int numHoldJobs;
00386 int numFailedJobs;
00387 int numCanceledJobs;
00388 int numCancelingJobs;
00389 int numFinishedDirtyJobs;
00390 int numFinishedJobs;
00391 int numSubmittedFiles;
00392 int numPendingFiles;
00393 int numActiveFiles;
00394 int numDoneFiles;
00395 int numWaitingFiles;
00396 int numHoldFiles;
00397 int numCancelingFiles;
00398 int numCanceledFiles;
00399 int numFailedFiles;
00400 int numFinishedFiles;
00401 int numCatalogFailedFiles;
00402 };
00403
00407 struct _glite_transfer_TransferSummary
00408 {
00409 char *channelName;
00410 char *voName;
00411 int __sizesnapshots;
00412 glite_transfer_TransferSnapshot **snapshots;
00413 };
00414
00418 struct _glite_transfer_TransferActivityPeriod
00419 {
00420 time_t *startTime;
00421 time_t *endTime;
00422 float averageRate;
00423 long bytesWritten;
00424 };
00425
00429 struct _glite_transfer_TransferActivity
00430 {
00431 char *channelName;
00432 char *voName;
00433 int __sizeactivityPeriods;
00434 glite_transfer_TransferActivityPeriod **activityPeriods;
00435 };
00436
00440 struct _glite_transfer_TransferAgent
00441 {
00442 char *name;
00443 char *DN;
00444 char *host;
00445 char *type;
00446 time_t *lastActive;
00447 char *state;
00448 char *version;
00449 char *contact;
00450 };
00451
00456
00457
00458
00459
00472 glite_transfer_ctx *glite_transfer_new(const char *endpoint);
00473
00479 void glite_transfer_free(glite_transfer_ctx *ctx);
00480
00488 void glite_transfer_add_sites(glite_transfer_ctx *ctx, const char *s, const char *d);
00489
00499 const char *glite_transfer_get_error(glite_transfer_ctx *ctx);
00500
00508 glite_transfer_errclass glite_transfer_get_errclass(glite_transfer_ctx *ctx);
00509
00518 void glite_transfer_set_error(glite_transfer_ctx *ctx,
00519 glite_transfer_errclass errclass, const char *fmt, ...);
00520
00529 void glite_transfer_set_verror(glite_transfer_ctx *ctx,
00530 glite_transfer_errclass errclass, const char *fmt, va_list ap);
00531
00541 glite_transfer_state glite_transfer_state_parse(glite_transfer_ctx *ctx,
00542 const char *state);
00543
00551 const char *glite_transfer_state_str(glite_transfer_state state);
00552
00553
00554
00555
00556
00557
00558
00559
00570 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_new(glite_transfer_ctx *ctx,
00571 const char *source, const char *dest, glite_transfer_state state);
00578 void glite_transfer_FileTransferStatus_free(glite_transfer_ctx *ctx,
00579 glite_transfer_FileTransferStatus *status);
00587 void glite_transfer_FileTransferStatus_freeArray(glite_transfer_ctx *ctx,
00588 int nitems, glite_transfer_FileTransferStatus *status[]);
00597 glite_transfer_FileTransferStatus *glite_transfer_FileTransferStatus_clone(glite_transfer_ctx *ctx,
00598 const glite_transfer_FileTransferStatus *status);
00608 int glite_transfer_FileTransferStatus_setLogicalName(glite_transfer_ctx *ctx,
00609 glite_transfer_FileTransferStatus *status, const char *name);
00619 int glite_transfer_FileTransferStatus_setReason(glite_transfer_ctx *ctx,
00620 glite_transfer_FileTransferStatus *status, const char *reason);
00630 int glite_transfer_FileTransferStatus_setReasonClass(glite_transfer_ctx *ctx,
00631 glite_transfer_FileTransferStatus *status, const char *reasonClass);
00632
00642 glite_transfer_JobStatus *glite_transfer_JobStatus_new(glite_transfer_ctx *ctx,
00643 const char *jobId, glite_transfer_state jobStatus);
00650 void glite_transfer_JobStatus_free(glite_transfer_ctx *ctx,
00651 glite_transfer_JobStatus *status);
00659 void glite_transfer_JobStatus_freeArray(glite_transfer_ctx *ctx, int nitems,
00660 glite_transfer_JobStatus *status[]);
00669 glite_transfer_JobStatus *glite_transfer_JobStatus_clone(glite_transfer_ctx *ctx,
00670 const glite_transfer_JobStatus *orig);
00671
00681 glite_transfer_PlacementJob *glite_transfer_PlacementJob_new(glite_transfer_ctx *ctx,
00682 const char *sourceSE, const char *destSE);
00689 void glite_transfer_PlacementJob_free(glite_transfer_ctx *ctx,
00690 glite_transfer_PlacementJob *job);
00699 glite_transfer_PlacementJob *glite_transfer_PlacementJob_clone(glite_transfer_ctx *ctx,
00700 const glite_transfer_PlacementJob *orig);
00710 int glite_transfer_PlacementJob_setParams(glite_transfer_ctx *ctx,
00711 glite_transfer_PlacementJob *job,
00712 const glite_transfer_TransferParams *params);
00722 int glite_transfer_PlacementJob_add(glite_transfer_ctx *ctx,
00723 glite_transfer_PlacementJob *job, const char *logicalFile);
00724
00734 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_new(glite_transfer_ctx *ctx,
00735 const char *src, const char *dst);
00742 void glite_transfer_TransferJobElement_free(glite_transfer_ctx *ctx,
00743 glite_transfer_TransferJobElement *elem);
00751 void glite_transfer_TransferJobElement_freeArray(glite_transfer_ctx *ctx,
00752 int nitems, glite_transfer_TransferJobElement *elems[]);
00761 glite_transfer_TransferJobElement *glite_transfer_TransferJobElement_clone(glite_transfer_ctx *ctx,
00762 const glite_transfer_TransferJobElement *orig);
00763
00771 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_new(glite_transfer_ctx *ctx);
00772 glite_transfer_TransferJobSummary2 *glite_transfer_TransferJobSummary2_new(glite_transfer_ctx *ctx);
00779 void glite_transfer_TransferJobSummary_free(glite_transfer_ctx *ctx,
00780 glite_transfer_TransferJobSummary *summary);
00781 void glite_transfer_TransferJobSummary2_free(glite_transfer_ctx *ctx,
00782 glite_transfer_TransferJobSummary2 *summary);
00783
00792 glite_transfer_TransferJobSummary *glite_transfer_TransferJobSummary_clone(glite_transfer_ctx *ctx,
00793 const glite_transfer_TransferJobSummary *orig);
00794 glite_transfer_TransferJobSummary2 *glite_transfer_TransferJobSummary2_clone(glite_transfer_ctx *ctx,
00795 const glite_transfer_TransferJobSummary2 *orig);
00796
00804 glite_transfer_TransferJob *glite_transfer_TransferJob_new(glite_transfer_ctx *ctx);
00811 void glite_transfer_TransferJob_free(glite_transfer_ctx *ctx,
00812 glite_transfer_TransferJob *job);
00821 glite_transfer_TransferJob *glite_transfer_TransferJob_clone(glite_transfer_ctx *ctx,
00822 const glite_transfer_TransferJob *orig);
00832 int glite_transfer_TransferJob_setParams(glite_transfer_ctx *ctx,
00833 glite_transfer_TransferJob *job,
00834 const glite_transfer_TransferParams *params);
00845 int glite_transfer_TransferJob_add(glite_transfer_ctx *ctx,
00846 glite_transfer_TransferJob *job,
00847 const char *src, const char *dst);
00848
00856 glite_transfer_TransferParams *glite_transfer_TransferParams_new(glite_transfer_ctx *ctx);
00863 void glite_transfer_TransferParams_free(glite_transfer_ctx *ctx,
00864 glite_transfer_TransferParams *params);
00873 glite_transfer_TransferParams *glite_transfer_TransferParams_clone(glite_transfer_ctx *ctx,
00874 const glite_transfer_TransferParams *orig);
00885 int glite_transfer_TransferParams_add(glite_transfer_ctx *ctx,
00886 glite_transfer_TransferParams *params, const char *key, const char *value);
00887
00898 glite_transfer_Channel *glite_transfer_Channel_new(glite_transfer_ctx *ctx,
00899 const char *name, const char *domainA, const char *domainB);
00900
00901 glite_transfer_Channel2 *glite_transfer_Channel2_new(glite_transfer_ctx *ctx,
00902 const char *name, const char *domainA, const char *domainB);
00903
00910 void glite_transfer_Channel_free(glite_transfer_ctx *ctx,
00911 glite_transfer_Channel *channel);
00912
00913 void glite_transfer_Channel2_free(glite_transfer_ctx *ctx,
00914 glite_transfer_Channel2 *channel2);
00915
00924 glite_transfer_Channel *glite_transfer_Channel_clone(glite_transfer_ctx *ctx,
00925 const glite_transfer_Channel *orig);
00926
00927 glite_transfer_Channel2 *glite_transfer_Channel2_clone(glite_transfer_ctx *ctx,
00928 const glite_transfer_Channel2 *orig);
00929
00939 int glite_transfer_Channel_setContact(glite_transfer_ctx *ctx,
00940 glite_transfer_Channel *channel, const char *contact);
00950 int glite_transfer_Channel_setState(glite_transfer_ctx *ctx,
00951 glite_transfer_Channel *channel, glite_channel_state state);
00952
00956 glite_transfer_Roles *glite_transfer_Roles_new(glite_transfer_ctx *ctx);
00957
00958
00959 void glite_transfer_ChannelAuditEntry_freeArray(glite_transfer_ctx *ctx,
00960 int nitems, glite_transfer_ChannelAuditEntry *ca[]);
00961
00962
00963 glite_transfer_ChannelAuditEntry *glite_transfer_ChannelAuditEntry_new(
00964 glite_transfer_ctx *ctx, const char *name);
00965
00966
00967 void glite_transfer_ChannelAuditEntry_free(glite_transfer_ctx *ctx,
00968 glite_transfer_ChannelAuditEntry *ca);
00969
00970
00971 glite_transfer_ChannelAuditEntry *glite_transfer_ChannelAuditEntry_clone(
00972 glite_transfer_ctx *ctx, const glite_transfer_ChannelAuditEntry *orig);
00973
00974 #ifdef __cplusplus
00975 }
00976 #endif
00977
00978 #endif