Loading...
Searching...
No Matches
XrdOfsPoscq.hh
Go to the documentation of this file.
#ifndef __OFSPOSCQ_H__
#define __OFSPOSCQ_H__
/******************************************************************************/
/* */
/* X r d O f s P o s c q . h h */
/* */
/* (c) 2009 by the Board of Trustees of the Leland Stanford, Jr., University */
/* All Rights Reserved */
/* Produced by Andrew Hanushevsky for Stanford University under contract */
/* DE-AC02-76-SFO0515 with the Department of Energy */
/* */
/* This file is part of the XRootD software suite. */
/* */
/* XRootD is free software: you can redistribute it and/or modify it under */
/* the terms of the GNU Lesser General Public License as published by the */
/* Free Software Foundation, either version 3 of the License, or (at your */
/* option) any later version. */
/* */
/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
/* License for more details. */
/* */
/* You should have received a copy of the GNU Lesser General Public License */
/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
/* */
/* The copyright holder's institutional names and contributor's names may not */
/* be used to endorse or promote products derived from this software without */
/* specific prior written permission of the institution or contributor. */
/******************************************************************************/
#include <map>
#include <string>
#include "XrdSys/XrdSysPthread.hh"
class XrdOss;
class XrdSysError;
class XrdOfsPoscq
{
public:
struct Request
{
long long addT; // Time committed to the queue
char LFN[1024]; // Logical File Name (null terminated)
char User[288]; // User trace identifier
char Reserved[24]; // Reserved for future
};
static const int ReqOffs = 64;
static const int ReqSize = sizeof(Request);
struct recEnt
{
recEnt *Next;
int Offset;
int Mode;
struct Request reqData;
recEnt(struct Request &reqref, int mval, recEnt *nval=0)
{Next = nval; Offset = 0; Mode = mval; reqData = reqref;}
};
int Add(const char *Tident, const char *Lfn, bool isNew);
int Commit(const char *Lfn, int Offset);
int Del(const char *Lfn, int Offset, int Unlink=0);
recEnt *Init(int &Ok);
static recEnt *List(XrdSysError *Say, const char *theFN);
inline int Num() {return pocIQ;}
XrdOfsPoscq(XrdSysError *erp, XrdOss *oss, const char *fn,
int sv=1);
~XrdOfsPoscq() {}
private:
void FailIni(const char *lfn);
//int reqRead(void *Buff, int Offs);
bool reqWrite(void *Buff, int Bsz, int Offs);
bool ReWrite(recEnt *rP);
bool VerOffset(const char *Lfn, int Offset);
struct FileSlot
{FileSlot *Next;
int Offset;
};
std::map<std::string, int> pqMap;
XrdSysMutex myMutex;
XrdSysError *eDest;
XrdOss *ossFS;
FileSlot *SlotList;
FileSlot *SlotLust;
char *pocFN;
int pocSZ;
int pocFD;
int pocIQ;
unsigned
short pocWS;
unsigned
short pocSV;
};
#endif
Say
XrdOucPup XrdCmsParser::Pup & Say
Definition XrdCmsParser.cc:124
XrdSysPthread.hh
XrdOfsPoscq::Num
int Num()
Definition XrdOfsPoscq.hh:76
XrdOfsPoscq::Request::User
char User[288]
Definition XrdOfsPoscq.hh:49
XrdOfsPoscq::ReqOffs
static const int ReqOffs
Definition XrdOfsPoscq.hh:53
XrdOfsPoscq::Del
int Del(const char *Lfn, int Offset, int Unlink=0)
Definition XrdOfsPoscq.cc:159
XrdOfsPoscq::List
static recEnt * List(XrdSysError *Say, const char *theFN)
Definition XrdOfsPoscq.cc:264
XrdOfsPoscq::~XrdOfsPoscq
~XrdOfsPoscq()
Definition XrdOfsPoscq.hh:80
XrdOfsPoscq::Request::addT
long long addT
Definition XrdOfsPoscq.hh:47
XrdOfsPoscq::Request::Reserved
char Reserved[24]
Definition XrdOfsPoscq.hh:50
XrdOfsPoscq::XrdOfsPoscq
XrdOfsPoscq(XrdSysError *erp, XrdOss *oss, const char *fn, int sv=1)
Definition XrdOfsPoscq.cc:53
XrdOfsPoscq::Init
recEnt * Init(int &Ok)
Definition XrdOfsPoscq.cc:207
XrdOfsPoscq::ReqSize
static const int ReqSize
Definition XrdOfsPoscq.hh:54
XrdOfsPoscq::Commit
int Commit(const char *Lfn, int Offset)
Definition XrdOfsPoscq.cc:132
XrdOfsPoscq::Add
int Add(const char *Tident, const char *Lfn, bool isNew)
Definition XrdOfsPoscq.cc:72
XrdOfsPoscq::Request::LFN
char LFN[1024]
Definition XrdOfsPoscq.hh:48
XrdOfsPoscq::Request
Definition XrdOfsPoscq.hh:46
XrdOss
Definition XrdOss.hh:499
XrdSysError
Definition XrdSysError.hh:90
XrdOfsPoscq::recEnt::Next
recEnt * Next
Definition XrdOfsPoscq.hh:58
XrdOfsPoscq::recEnt::recEnt
recEnt(struct Request &reqref, int mval, recEnt *nval=0)
Definition XrdOfsPoscq.hh:62
XrdOfsPoscq::recEnt::Mode
int Mode
Definition XrdOfsPoscq.hh:60
XrdOfsPoscq::recEnt::reqData
struct Request reqData
Definition XrdOfsPoscq.hh:61
XrdOfsPoscq::recEnt::Offset
int Offset
Definition XrdOfsPoscq.hh:59