xrootd
Loading...
Searching...
No Matches
XrdSsiFileSess.hh
Go to the documentation of this file.
1#ifndef __SSI_FILESESS_H__
2#define __SSI_FILESESS_H__
3/******************************************************************************/
4/* */
5/* X r d S s i F i l e S e s s . h h */
6/* */
7/* (c) 2016 by the Board of Trustees of the Leland Stanford, Jr., University */
8/* Produced by Andrew Hanushevsky for Stanford University under contract */
9/* DE-AC02-76-SFO0515 with the Department of Energy */
10/* */
11/* This file is part of the XRootD software suite. */
12/* */
13/* XRootD is free software: you can redistribute it and/or modify it under */
14/* the terms of the GNU Lesser General Public License as published by the */
15/* Free Software Foundation, either version 3 of the License, or (at your */
16/* option) any later version. */
17/* */
18/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
19/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
20/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
21/* License for more details. */
22/* */
23/* You should have received a copy of the GNU Lesser General Public License */
24/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
25/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
26/* */
27/* The copyright holder's institutional names and contributor's names may not */
28/* be used to endorse or promote products derived from this software without */
29/* specific prior written permission of the institution or contributor. */
30/******************************************************************************/
31
32#include <cstring>
33#include <sys/types.h>
34
36#include "XrdSfs/XrdSfsXio.hh"
37#include "XrdSsi/XrdSsiBVec.hh"
42
43class XrdOucEnv;
44struct XrdSsiRespInfo;
45
47{
48public:
49
50static XrdSsiFileSess *Alloc(XrdOucErrInfo &einfo, const char *user);
51
53 const XrdSsiRespInfo *respP,
54 unsigned int reqID);
55
57
58 int close(bool viaDel=false);
59
60 int fctl(const int cmd,
61 int alen,
62 const char *args,
63 const XrdSecEntity *client);
64
65 const char *FName() {return gigID;}
66
67 int open(const char *fileName,
68 XrdOucEnv &theEnv,
69 XrdSfsFileOpenMode openMode);
70
72 char *buffer,
73 XrdSfsXferSize buffer_size);
74
75 void Recycle();
76
78
79 int SendData(XrdSfsDio *sfDio,
80 XrdSfsFileOffset offset,
81 XrdSfsXferSize size);
82
83static void SetAuthDNS() {authDNS = true;}
84
85 void setXio(XrdSfsXio *xP) {xioP = xP;}
86
87 int truncate(XrdSfsFileOffset fileOffset);
88
90 const char *buffer,
91 XrdSfsXferSize buffer_size);
92
93private:
94
95// Constructor (via Alloc()) and destructor (via Recycle())
96//
97 XrdSsiFileSess(XrdOucErrInfo &einfo, const char *user)
98 {Init(einfo, user, false);}
99 ~XrdSsiFileSess() {} // Recycle() calls Reset()
100
101void Init(XrdOucErrInfo &einfo, const char *user, bool forReuse);
102bool NewRequest(unsigned int reqid, XrdOucBuffer *oP,
103 XrdSfsXioHandle bR, int rSz);
104void Reset();
106 unsigned int rid);
107
108static XrdSysMutex arMutex; // Alloc and Recycle protector
110static int freeNum;
111static int freeNew;
112static int freeMax;
113static int freeAbs;
114static bool authDNS;
115
117char *tident;
119char *gigID;
120char *fsUser;
129
132};
133#endif
int XrdSfsFileOpenMode
Definition XrdSfsInterface.hh:128
long long XrdSfsFileOffset
Definition XrdSfsInterface.hh:127
int XrdSfsXferSize
Definition XrdSfsInterface.hh:130
class XrdBuffer * XrdSfsXioHandle
Definition XrdSfsXio.hh:46
Definition XrdOucBuffer.hh:141
Definition XrdOucEnv.hh:42
Definition XrdOucErrInfo.hh:101
Definition XrdSecEntity.hh:65
Definition XrdSfsDio.hh:47
Definition XrdSfsXio.hh:55
Definition XrdSsiBVec.hh:36
Definition XrdSsiFileResource.hh:42
Definition XrdSsiFileSess.hh:47
static XrdSsiFileSess * freeList
Definition XrdSsiFileSess.hh:109
void setXio(XrdSfsXio *xP)
Definition XrdSsiFileSess.hh:85
int fctl(const int cmd, int alen, const char *args, const XrdSecEntity *client)
int open(const char *fileName, XrdOucEnv &theEnv, XrdSfsFileOpenMode openMode)
static int freeAbs
Definition XrdSsiFileSess.hh:113
int close(bool viaDel=false)
XrdSfsXferSize write(XrdSfsFileOffset fileOffset, const char *buffer, XrdSfsXferSize buffer_size)
int reqSize
Definition XrdSsiFileSess.hh:125
static XrdSsiFileSess * Alloc(XrdOucErrInfo &einfo, const char *user)
static int freeMax
Definition XrdSsiFileSess.hh:112
XrdSsiBVec eofVec
Definition XrdSsiFileSess.hh:130
XrdSsiRRTable< XrdSsiFileReq > rTab
Definition XrdSsiFileSess.hh:131
void Init(XrdOucErrInfo &einfo, const char *user, bool forReuse)
bool inProg
Definition XrdSsiFileSess.hh:128
bool AttnInfo(XrdOucErrInfo &eInfo, const XrdSsiRespInfo *respP, unsigned int reqID)
static void SetAuthDNS()
Definition XrdSsiFileSess.hh:83
XrdSysMutex myMutex
Definition XrdSsiFileSess.hh:121
bool isOpen
Definition XrdSsiFileSess.hh:127
char * tident
Definition XrdSsiFileSess.hh:117
XrdSfsXferSize read(XrdSfsFileOffset fileOffset, char *buffer, XrdSfsXferSize buffer_size)
static bool authDNS
Definition XrdSsiFileSess.hh:114
int truncate(XrdSfsFileOffset fileOffset)
XrdOucErrInfo * errInfo()
Definition XrdSsiFileSess.hh:56
~XrdSsiFileSess()
Definition XrdSsiFileSess.hh:99
int SendData(XrdSfsDio *sfDio, XrdSfsFileOffset offset, XrdSfsXferSize size)
static XrdSysMutex arMutex
Definition XrdSsiFileSess.hh:108
XrdSsiFileResource fileResource
Definition XrdSsiFileSess.hh:116
XrdSsiFileSess * nextFree
Definition XrdSsiFileSess.hh:124
bool NewRequest(unsigned int reqid, XrdOucBuffer *oP, XrdSfsXioHandle bR, int rSz)
char * fsUser
Definition XrdSsiFileSess.hh:120
XrdSsiFileResource & Resource()
Definition XrdSsiFileSess.hh:77
char * gigID
Definition XrdSsiFileSess.hh:119
XrdSfsXio * xioP
Definition XrdSsiFileSess.hh:122
static int freeNum
Definition XrdSsiFileSess.hh:110
int reqLeft
Definition XrdSsiFileSess.hh:126
static int freeNew
Definition XrdSsiFileSess.hh:111
XrdOucBuffer * oucBuff
Definition XrdSsiFileSess.hh:123
XrdSfsXferSize writeAdd(const char *buff, XrdSfsXferSize blen, unsigned int rid)
XrdSsiFileSess(XrdOucErrInfo &einfo, const char *user)
Definition XrdSsiFileSess.hh:97
const char * FName()
Definition XrdSsiFileSess.hh:65
XrdOucErrInfo * eInfo
Definition XrdSsiFileSess.hh:118
Definition XrdSsiRRTable.hh:39
Definition XrdSysPthread.hh:165
Definition XrdSsiRespInfo.hh:44