47 #include <sys/param.h>
76 #define XRDOSS_FAIL_FILE (char *)".fail"
92 int prty = *(
int *)carg;
93 return (req->
prty >= prty);
111 int Oflag, mode_t
Mode,
unsigned long long Popts)
124 int Oflag, mode_t
Mode)
129 static time_t nextScrub =
xfrkeep + time(0);
132 time_t cTime, mTime, tNow = time(0);
143 if (nextScrub < tNow)
145 if (nextScrub < tNow)
164 ReqID.
ID(idbuff,
sizeof(idbuff));
173 {
char idbuff[64], usrbuff[512];
174 ReqID.
ID(idbuff,
sizeof(idbuff));
176 {pdata[0] = (
char *)
"+ "; pdlen[0] = 2;}
177 else {pdlen[0] =
getID(Tid,env,usrbuff,
sizeof(usrbuff)); pdata[0] = usrbuff;}
178 pdata[1] = idbuff; pdlen[1] = strlen(idbuff);
179 pdata[2] = (
char *)
" "; pdlen[2] = 1;
181 pdata[4] = (
char *)
" "; pdlen[4] = 1;
182 pdata[5] = (
char *)
"0 "; pdlen[5] = 2;
184 pdata[7] = (
char *)fn; pdlen[7] = strlen(fn);
185 pdata[8] = (
char *)
"\n"; pdlen[8] = 1;
186 pdata[9] = 0; pdlen[9] = 0;
192 pdata[k] = (
char *)
"\n"; pdlen[k++] = 1;
193 pdata[k] = 0; pdlen[k] = 0;
207 unsigned long long Popts)
212 struct stat statbuff;
214 char actual_path[MAXPATHLEN+1], *remote_path;
225 req.
path = strdup(fn);
243 if ((rc =
rmt_N2N->
lfn2rfn(fn, actual_path,
sizeof(actual_path))))
245 else remote_path = actual_path;
246 else remote_path = (
char *)fn;
253 else {StageAccess.
UnLock();
254 if ((rc =
MSS_Stat(remote_path, &statbuff)))
return rc;
269 newreq->
size = statbuff.st_size;
277 else prty = prty << 8;
342 etime = time(0) - etime;
396 unsigned long long numq = 1;
409 {
if ((xfrtime = req->
sigtod - time(0)) >
xfrovhd)
return xfrtime;
435 char rfs_fn[MAXPATHLEN+1];
436 char lfs_fn[MAXPATHLEN+1];
467 *buff =
'+'; bP = buff+1; bsz -= 3;
471 if (Tid && (n = strlen(Tid)) <= bsz) {strcpy(bP, Tid); bP += n;}
475 *bP++ =
' '; *bP =
'\0';
485 struct stat statbuff;
487 char path[MAXPATHLEN+8];
497 fnlen = strlen(path);
501 if ((fnlen + strlen(fsfx)) >=
sizeof(path))
return 0;
502 strcpy(path+fnlen, fsfx);
506 if (
stat(path, &statbuff))
return 0;
507 if (mTime) *mTime = statbuff.st_mtime;
508 return statbuff.st_ctime;
int XrdOssFind_Prty(XrdOssStage_Req *req, void *carg)
int XrdOssFind_Req(XrdOssStage_Req *req, void *carg)
unsigned long XrdOucHashVal(const char *KeyVal)
int XrdOssScrubScan(const char *key, char *cip, void *xargp)
int stat(const char *path, struct stat *buf)
int Add(char Opc, const char *Lfn, const char *Opq, const char *Usr, const char *Rid, const char *Nop, const char *Pop, int Prty=1)
static XrdSysSemaphore ReadyRequest
XrdOucDLlist< XrdOssStage_Req > pendList
static XrdOssStage_Req StageQ
static XrdSysMutex StageMutex
XrdOucDLlist< XrdOssStage_Req > fullList
int GenRemotePath(const char *, char *)
virtual int Stage(const char *, const char *, XrdOucEnv &, int, mode_t, unsigned long long)
time_t HasFile(const char *fn, const char *sfx, time_t *mTime=0)
int Stage_RT(const char *, const char *, XrdOucEnv &, unsigned long long)
void * Stage_In(void *carg)
int GetFile(XrdOssStage_Req *req)
int GenLocalPath(const char *, char *)
XrdOucName2Name * lcl_N2N
int MSS_Stat(const char *, struct stat *buff=0)
int getID(const char *, XrdOucEnv &, char *, int)
int Stage_QT(const char *, const char *, XrdOucEnv &, int, mode_t)
XrdOucName2Name * rmt_N2N
void Insert(XrdOucDLlist *Node, T *Item=0)
char * Get(const char *varname)
T * Apply(int(*func)(const char *, T *, void *), void *Arg)
T * Add(const char *KeyVal, T *KeyData, const int LifeTime=0, XrdOucHash_Options opt=Hash_default)
int Subs(XrdOucMsubsInfo &Info, char **Data, int *Dlen)
virtual int lfn2rfn(const char *lfn, char *buff, int blen)=0
int Run(XrdOucStream *Sp, const char *argV[], int argc=0, const char *envV[]=0) const
int Feed(const char *data[], const int dlen[])
char * ID(char *buff, int blen)
static int a2i(XrdSysError &, const char *emsg, const char *item, int *val, int minv=-1, int maxv=-1)
int Emsg(const char *esfx, int ecode, const char *text1, const char *text2=0)
void Lock(XrdSysMutex *Mutex)