XRootD
XrdRmcSlot Class Reference

#include <XrdRmcSlot.hh>

+ Collaboration diagram for XrdRmcSlot:

Classes

struct  ioQ
 
struct  SlotList
 
union  SlotState
 

Public Member Functions

 XrdRmcSlot ()
 
 ~XrdRmcSlot ()
 
void File (XrdOucCacheIO *kV, int you)
 
void Hide (XrdRmcSlot *Base, int *hTab, int hI)
 
void Owner (XrdRmcSlot *Base)
 
void Owner (XrdRmcSlot *Base, XrdRmcSlot *sP)
 
int Pull (XrdRmcSlot *Base)
 
int Push (XrdRmcSlot *Base, XrdRmcSlot *sP)
 
void reRef (XrdRmcSlot *Base)
 
void unRef (XrdRmcSlot *Base)
 

Static Public Member Functions

static int Find (XrdRmcSlot *Base, long long What, int n)
 
static void Init (XrdRmcSlot *Base, int Num)
 

Public Attributes

union {
long long Contents
 
XrdOucCacheIOKey
 
}; 
 
int Count
 
int HLink
 
SlotList Own
 
SlotState Status
 

Static Public Attributes

static const int inTrans = 0x40000000
 
static const int isNew = 0x10000000
 
static const int isShort = 0x80000000
 
static const int isSUSE = 0x20000000
 
static const int lenMask = 0x01ffffff
 

Detailed Description

Definition at line 41 of file XrdRmcSlot.hh.


Class Documentation

◆ XrdRmcSlot::SlotList

struct XrdRmcSlot::SlotList

Definition at line 116 of file XrdRmcSlot.hh.

+ Collaboration diagram for XrdRmcSlot::SlotList:
Class Members
int Next
int Prev

◆ XrdRmcSlot::SlotState

union XrdRmcSlot::SlotState

Definition at line 129 of file XrdRmcSlot.hh.

+ Collaboration diagram for XrdRmcSlot::SlotState:
Class Members
XrdRmcData * Data
int inUse
struct SlotList LRU
struct ioQ * waitQ

Constructor & Destructor Documentation

◆ XrdRmcSlot()

XrdRmcSlot::XrdRmcSlot ( )
inline

Definition at line 150 of file XrdRmcSlot.hh.

150 : Contents(-1), HLink(0), Count(0) {}

◆ ~XrdRmcSlot()

XrdRmcSlot::~XrdRmcSlot ( )
inline

Definition at line 152 of file XrdRmcSlot.hh.

152 {}

Member Function Documentation

◆ File()

void XrdRmcSlot::File ( XrdOucCacheIO kV,
int  you 
)
inline

Definition at line 45 of file XrdRmcSlot.hh.

46  {Status.Data = 0; Key = kV; HLink = you; Count = 1;}
SlotState Status
Definition: XrdRmcSlot.hh:139

References Count, XrdRmcSlot::SlotState::Data, HLink, and Status.

◆ Find()

static int XrdRmcSlot::Find ( XrdRmcSlot Base,
long long  What,
int  n 
)
inlinestatic

Definition at line 48 of file XrdRmcSlot.hh.

49  {while(n && Base[n].Contents != What) n=Base[n].HLink;
50  return n;
51  }

References HLink.

◆ Hide()

void XrdRmcSlot::Hide ( XrdRmcSlot Base,
int *  hTab,
int  hI 
)
inline

Definition at line 53 of file XrdRmcSlot.hh.

54  {int j, Slot = this-Base;
55  if (hTab[hI] == Slot) hTab[hI] = HLink;
56  else if ((j = hTab[hI]))
57  {while((hI=Base[j].HLink) && hI != Slot) j=hI;
58  if (hI) Base[j].HLink = Base[hI].HLink;
59  }
60  Count = 0; Contents = -1;
61  }

References Count, and HLink.

◆ Init()

static void XrdRmcSlot::Init ( XrdRmcSlot Base,
int  Num 
)
inlinestatic

Definition at line 63 of file XrdRmcSlot.hh.

64  {int i;
65  Base->Status.LRU.Next = Base->Status.LRU.Prev = 0;
66  Base->Own.Next = Base->Own.Prev = 0;
67  for (i = 1; i < Num; i++)
68  {Base[i].Status.LRU.Next = Base[i].Status.LRU.Prev = i;
69  Base[i].Own.Next = Base[i].Own.Prev = i;
70  Base->Push(Base, &Base[i]);
71  }
72  }
struct SlotList LRU
Definition: XrdRmcSlot.hh:132
int Push(XrdRmcSlot *Base, XrdRmcSlot *sP)
Definition: XrdRmcSlot.hh:81
SlotList Own
Definition: XrdRmcSlot.hh:140

References XrdRmcSlot::SlotState::LRU, XrdRmcSlot::SlotList::Next, Own, XrdRmcSlot::SlotList::Prev, Push(), and Status.

Referenced by XrdRmcReal::XrdRmcReal().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ Owner() [1/2]

void XrdRmcSlot::Owner ( XrdRmcSlot Base)
inline

Definition at line 90 of file XrdRmcSlot.hh.

91  {Base[Own.Prev].Own.Next = Own.Next;
92  Base[Own.Next].Own.Prev = Own.Prev;
93  Own.Next = Own.Prev = this-Base;
94  }

References XrdRmcSlot::SlotList::Next, Own, and XrdRmcSlot::SlotList::Prev.

◆ Owner() [2/2]

void XrdRmcSlot::Owner ( XrdRmcSlot Base,
XrdRmcSlot sP 
)
inline

Definition at line 96 of file XrdRmcSlot.hh.

97  {int UrNum = sP-Base, MyNum = this-Base;
98  sP->Own.Next = MyNum; sP->Own.Prev = Own.Prev;
99  Base[Own.Prev].Own.Next = UrNum; Own.Prev = UrNum;
100  }

References XrdRmcSlot::SlotList::Next, Own, and XrdRmcSlot::SlotList::Prev.

◆ Pull()

int XrdRmcSlot::Pull ( XrdRmcSlot Base)
inline

Definition at line 74 of file XrdRmcSlot.hh.

77  Status.LRU.Next = Status.LRU.Prev = this-Base;
78  return Status.LRU.Next;
79  }

References XrdRmcSlot::SlotState::LRU, XrdRmcSlot::SlotList::Next, XrdRmcSlot::SlotList::Prev, and Status.

◆ Push()

int XrdRmcSlot::Push ( XrdRmcSlot Base,
XrdRmcSlot sP 
)
inline

Definition at line 81 of file XrdRmcSlot.hh.

82  {int UrNum = sP-Base, MyNum = this-Base;
83  sP->Status.LRU.Next = MyNum;
84  sP->Status.LRU.Prev = Status.LRU.Prev;
85  Base[Status.LRU.Prev].Status.LRU.Next = UrNum;
86  Status.LRU.Prev = UrNum;
87  return UrNum;
88  }

References XrdRmcSlot::SlotState::LRU, XrdRmcSlot::SlotList::Next, XrdRmcSlot::SlotList::Prev, and Status.

Referenced by Init().

+ Here is the caller graph for this function:

◆ reRef()

void XrdRmcSlot::reRef ( XrdRmcSlot Base)
inline

Definition at line 102 of file XrdRmcSlot.hh.

103  { Status.LRU.Prev = Base->Status.LRU.Prev;
104  Base[ Status.LRU.Prev].Status.LRU.Next = this-Base;
105  Base->Status.LRU.Prev = this-Base;
106  Status.LRU.Next = 0;
107  }

References XrdRmcSlot::SlotState::LRU, XrdRmcSlot::SlotList::Next, XrdRmcSlot::SlotList::Prev, and Status.

◆ unRef()

void XrdRmcSlot::unRef ( XrdRmcSlot Base)
inline

Definition at line 109 of file XrdRmcSlot.hh.

110  { Status.LRU.Next = Base->Status.LRU.Next;
111  Base [Status.LRU.Next].Status.LRU.Prev = this-Base;
112  Base->Status.LRU.Next = this-Base;
113  Status.LRU.Prev = 0;
114  }

References XrdRmcSlot::SlotState::LRU, XrdRmcSlot::SlotList::Next, XrdRmcSlot::SlotList::Prev, and Status.

Member Data Documentation

◆ 

union { ... }

◆ Count

int XrdRmcSlot::Count

Definition at line 142 of file XrdRmcSlot.hh.

Referenced by File(), and Hide().

◆ HLink

int XrdRmcSlot::HLink

Definition at line 141 of file XrdRmcSlot.hh.

Referenced by XrdRmcReal::XrdRmcReal(), File(), Find(), and Hide().

◆ inTrans

const int XrdRmcSlot::inTrans = 0x40000000
static

Definition at line 146 of file XrdRmcSlot.hh.

◆ isNew

const int XrdRmcSlot::isNew = 0x10000000
static

Definition at line 148 of file XrdRmcSlot.hh.

Referenced by XrdRmcData::Preread().

◆ isShort

const int XrdRmcSlot::isShort = 0x80000000
static

Definition at line 145 of file XrdRmcSlot.hh.

◆ isSUSE

const int XrdRmcSlot::isSUSE = 0x20000000
static

Definition at line 147 of file XrdRmcSlot.hh.

Referenced by XrdRmcData::Preread().

◆ lenMask

const int XrdRmcSlot::lenMask = 0x01ffffff
static

Definition at line 144 of file XrdRmcSlot.hh.

Referenced by XrdRmcReal::XrdRmcReal().

◆ Own

SlotList XrdRmcSlot::Own

Definition at line 140 of file XrdRmcSlot.hh.

Referenced by XrdRmcReal::XrdRmcReal(), Init(), and Owner().

◆ Status

SlotState XrdRmcSlot::Status

Definition at line 139 of file XrdRmcSlot.hh.

Referenced by XrdRmcReal::Attach(), File(), Init(), Pull(), Push(), reRef(), and unRef().


The documentation for this class was generated from the following file: