XRootD
XrdSutBuckList Class Reference

#include <XrdSutBuckList.hh>

+ Collaboration diagram for XrdSutBuckList:

Public Member Functions

 XrdSutBuckList (XrdSutBucket *b=0)
 
virtual ~XrdSutBuckList ()
 
XrdSutBucketBegin ()
 
XrdSutBucketEnd () const
 
XrdSutBucketNext ()
 
void PushBack (XrdSutBucket *b)
 
void PutInFront (XrdSutBucket *b)
 
void Remove (XrdSutBucket *b)
 
int Size () const
 

Detailed Description

Definition at line 61 of file XrdSutBuckList.hh.

Constructor & Destructor Documentation

◆ XrdSutBuckList()

XrdSutBuckList::XrdSutBuckList ( XrdSutBucket b = 0)

Definition at line 40 of file XrdSutBuckList.cc.

41 {
42  // Constructor
43 
44  previous = current = begin = end = 0;
45  size = 0;
46 
47  if (b) {
49  current = begin = end = f;
50  size++;
51  }
52 }

◆ ~XrdSutBuckList()

XrdSutBuckList::~XrdSutBuckList ( )
virtual

Definition at line 55 of file XrdSutBuckList.cc.

56 {
57  // Destructor
58 
59  XrdSutBuckListNode *n = 0;
60  XrdSutBuckListNode *b = begin;
61  while (b) {
62  n = b->Next();
63  delete (b);
64  b = n;
65  }
66 }
XrdSutBuckListNode * Next() const

References XrdSutBuckListNode::Next().

+ Here is the call graph for this function:

Member Function Documentation

◆ Begin()

XrdSutBucket * XrdSutBuckList::Begin ( )

Definition at line 154 of file XrdSutBuckList.cc.

155 {
156  // Iterator functionality: init
157 
158  previous = 0;
159  current = begin;
160  if (current)
161  return current->Buck();
162  return (XrdSutBucket *)0;
163 }
XrdSutBucket * Buck() const

References XrdSutBuckListNode::Buck().

Referenced by XrdSutBuffer::~XrdSutBuffer(), XrdSutBuffer::Deactivate(), XrdSutBuffer::Dump(), XrdSutBuffer::GetBucket(), XrdSutBuffer::Message(), and XrdSutBuffer::Serialized().

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

◆ End()

XrdSutBucket* XrdSutBuckList::End ( ) const
inline

Definition at line 78 of file XrdSutBuckList.hh.

78 { return end->Buck(); }

References XrdSutBuckListNode::Buck().

+ Here is the call graph for this function:

◆ Next()

XrdSutBucket * XrdSutBuckList::Next ( )

Definition at line 166 of file XrdSutBuckList.cc.

167 {
168  // Iterator functionality: get next
169 
170  previous = current;
171  if (current) {
172  current = current->Next();
173  if (current)
174  return current->Buck();
175  }
176  return (XrdSutBucket *)0;
177 }

References XrdSutBuckListNode::Buck(), and XrdSutBuckListNode::Next().

Referenced by XrdSutBuffer::~XrdSutBuffer(), XrdSutBuffer::Deactivate(), XrdSutBuffer::Dump(), XrdSutBuffer::GetBucket(), XrdSutBuffer::Message(), and XrdSutBuffer::Serialized().

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

◆ PushBack()

void XrdSutBuckList::PushBack ( XrdSutBucket b)

Definition at line 97 of file XrdSutBuckList.cc.

98 {
99  // Add at the end of the list
100  // Check to avoid duplicates
101 
102  if (!Find(b)) {
103  XrdSutBuckListNode *nb = new XrdSutBuckListNode(b,0);
104  if (!begin)
105  begin = nb;
106  if (end)
107  end->SetNext(nb);
108  end = nb;
109  size++;
110  }
111 }
void SetNext(XrdSutBuckListNode *n)

References XrdSutBuckListNode::SetNext().

Referenced by XrdSutBuffer::XrdSutBuffer(), and XrdSutBuffer::AddBucket().

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

◆ PutInFront()

void XrdSutBuckList::PutInFront ( XrdSutBucket b)

Definition at line 82 of file XrdSutBuckList.cc.

83 {
84  // Add at the beginning of the list
85  // Check to avoid duplicates
86 
87  if (!Find(b)) {
88  XrdSutBuckListNode *nb = new XrdSutBuckListNode(b,begin);
89  begin = nb;
90  if (!end)
91  end = nb;
92  size++;
93  }
94 }

◆ Remove()

void XrdSutBuckList::Remove ( XrdSutBucket b)

Definition at line 114 of file XrdSutBuckList.cc.

115 {
116  // Remove node containing bucket b
117 
118  XrdSutBuckListNode *curr = current;
119  XrdSutBuckListNode *prev = previous;
120 
121  if (!curr || curr->Buck() != b || (prev && curr != prev->Next())) {
122  // We need first to find the address
123  curr = begin;
124  prev = 0;
125  for (; curr; curr = curr->Next()) {
126  if (curr->Buck() == b)
127  break;
128  prev = curr;
129  }
130  }
131 
132  // The bucket is not in the list
133  if (!curr)
134  return;
135 
136  // Now we have all the information to remove
137  if (prev) {
138  current = curr->Next();
139  prev->SetNext(current);
140  previous = curr;
141  } else if (curr == begin) {
142  // First buffer
143  current = curr->Next();
144  begin = current;
145  previous = 0;
146  }
147 
148  // Cleanup and update size
149  delete curr;
150  size--;
151 }

References XrdSutBuckListNode::Buck(), XrdSutBuckListNode::Next(), and XrdSutBuckListNode::SetNext().

Referenced by XrdSutBuffer::Remove().

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

◆ Size()

int XrdSutBuckList::Size ( ) const
inline

Definition at line 77 of file XrdSutBuckList.hh.

77 { return size; }

Referenced by XrdSutBuffer::Dump(), and XrdSutBuffer::GetNBuckets().

+ Here is the caller graph for this function:

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