XRootD
XrdSutBucket Class Reference

#include <XrdSutBucket.hh>

+ Collaboration diagram for XrdSutBucket:

Public Member Functions

 XrdSutBucket (char *bp=0, int sz=0, int ty=0)
 
 XrdSutBucket (XrdOucString &s, int ty=0)
 
 XrdSutBucket (XrdSutBucket &b)
 
virtual ~XrdSutBucket ()
 
void Dump (int opt=1)
 
int operator!= (const XrdSutBucket &b)
 
int operator== (const XrdSutBucket &b)
 
int SetBuf (const char *nb=0, int ns=0)
 
void ToString (XrdOucString &s)
 
void Update (char *nb=0, int ns=0, int ty=0)
 
int Update (XrdOucString &s, int ty=0)
 

Public Attributes

char * buffer
 
kXR_int32 size
 
kXR_int32 type
 

Detailed Description

Definition at line 43 of file XrdSutBucket.hh.

Constructor & Destructor Documentation

◆ XrdSutBucket() [1/3]

XrdSutBucket::XrdSutBucket ( char *  bp = 0,
int  sz = 0,
int  ty = 0 
)

Definition at line 52 of file XrdSutBucket.cc.

53 {
54  // Default constructor
55 
56  buffer = membuf = bp;
57  size=sz;
58  type=ty;
59 }
kXR_int32 type
Definition: XrdSutBucket.hh:46
kXR_int32 size
Definition: XrdSutBucket.hh:47

References buffer, size, and type.

◆ XrdSutBucket() [2/3]

XrdSutBucket::XrdSutBucket ( XrdOucString s,
int  ty = 0 
)

Definition at line 62 of file XrdSutBucket.cc.

63 {
64  // Constructor
65 
66  membuf = 0;
67  size = 0;
68  type = ty;
69 
70  if (s.length()) {
71  membuf = new char [s.length()];
72  if (membuf) {
73  memcpy(membuf,s.c_str(),s.length());
74  buffer = membuf;
75  size = s.length();
76  }
77  }
78 }
const char * c_str() const
int length() const

References buffer, XrdOucString::c_str(), XrdOucString::length(), size, and type.

+ Here is the call graph for this function:

◆ XrdSutBucket() [3/3]

XrdSutBucket::XrdSutBucket ( XrdSutBucket b)

Definition at line 81 of file XrdSutBucket.cc.

82 {
83  // Copy constructor
84 
85  membuf = new char[b.size];
86  if (membuf) {
87  memcpy(membuf,b.buffer,b.size);
88  buffer = membuf;
89  type = b.type;
90  size = b.size;
91  }
92 }

References buffer, size, and type.

◆ ~XrdSutBucket()

virtual XrdSutBucket::~XrdSutBucket ( )
inlinevirtual

Definition at line 53 of file XrdSutBucket.hh.

53 {if (membuf) delete[] membuf;}

Member Function Documentation

◆ Dump()

void XrdSutBucket::Dump ( int  opt = 1)

Definition at line 171 of file XrdSutBucket.cc.

172 {
173  // Dump content of bucket
174  // Options:
175  // 1 print header and tail (default)
176  // 0 dump only content
177  EPNAME("Bucket::Dump");
178 
179  if (opt == 1) {
180  PRINT("//-----------------------------------------------------//");
181  PRINT("// //");
182  PRINT("// XrdSutBucket DUMP //");
183  PRINT("// //");
184  }
185 
186  PRINT("// addr: " <<this);
187  PRINT("// type: " <<type<<" ("<<XrdSutBuckStr(type)<<")");
188  PRINT("// size: " <<size <<" bytes");
189  PRINT("// content:");
190  std::string bhex;
191  bhex.reserve( XrdSutPRINTLEN );
192  char bpri[XrdSutPRINTLEN] = {0};
193  unsigned int nby = size;
194  unsigned int k = 0, curpri = 0;
195  unsigned char i = 0, j = 0, l = 0;
196  for (k = 0; k < nby; k++) {
197  i = (unsigned char)buffer[k];
198  bool isascii = (i > 127) ? 0 : 1;
199  if (isascii) {
200  j = i / 32;
201  l = i - j * 32;
202  }
203  char chex[8];
204  sprintf(chex," 0x%02x",(int)(i & 0xFF));
205  bhex.append( chex );
206  if (isascii && ((XrdSutCharMsk[0][j] & (1 << (31-l+1))) || i == 0x20)) {
207  bpri[curpri] = i;
208  } else {
209  bpri[curpri] = '.';
210  }
211  curpri++;
212  if (curpri > 7) {
213  bpri[curpri] = 0;
214  PRINT("// " <<bhex<<" "<<bpri);
215  bhex.clear();
216  memset(bpri,0,sizeof(bpri));
217  curpri = 0;
218  }
219  }
220  bpri[curpri] = 0;
221  if (curpri > 0) {
222  while (curpri++ < 8) {
223  bhex.append( " " );
224  }
225  }
226  PRINT("// " <<bhex<<" "<<bpri);
227 
228  if (opt == 1) {
229  PRINT("// //");
230  PRINT("//-----------------------------------------------------//");
231  }
232 }
#define EPNAME(x)
Definition: XrdBwmTrace.hh:56
#define PRINT(y)
const char * XrdSutBuckStr(int kbck)
Definition: XrdSutAux.cc:121
#define XrdSutPRINTLEN
Definition: XrdSutAux.hh:52
static kXR_int32 XrdSutCharMsk[4][4]
Definition: XrdSutBucket.cc:40

References buffer, EPNAME, PRINT, size, type, XrdSutBuckStr(), XrdSutCharMsk, and XrdSutPRINTLEN.

Referenced by XrdSutBuffer::Dump().

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

◆ operator!=()

int XrdSutBucket::operator!= ( const XrdSutBucket b)
inline

Definition at line 66 of file XrdSutBucket.hh.

66 { return !(*this == b); }

◆ operator==()

int XrdSutBucket::operator== ( const XrdSutBucket b)

Definition at line 235 of file XrdSutBucket.cc.

236 {
237  // Compare bucket b to local bucket: return 1 if matches, 0 if not
238 
239  if (b.size == size)
240  if (!memcmp(buffer,b.buffer,size))
241  return 1;
242  return 0;
243 }

References buffer, and size.

◆ SetBuf()

int XrdSutBucket::SetBuf ( const char *  nb = 0,
int  ns = 0 
)

Definition at line 132 of file XrdSutBucket.cc.

133 {
134  // Fill local buffer with ns bytes at nb.
135  // Memory is properly allocated / deallocated
136  // Returns 0 if ok, -1 otherwise.
137 
138  if (membuf)
139  delete[] membuf;
140  size = 0;
141  membuf = buffer = 0;
142  if (nb && ns) {
143  membuf = new char [ns];
144  if (membuf) {
145  memcpy(membuf,nb,ns);
146  buffer = membuf;
147  size = ns;
148  return 0;
149  }
150  }
151  return -1;
152 }

References buffer, and size.

Referenced by XrdCryptosslX509::Export(), XrdCryptosslX509Req::Export(), XrdSecProtocolpwd::Init(), main(), XrdSutBuffer::MarshalBucket(), XrdSecProtocolgsi::setKey(), XrdSutBuffer::UpdateBucket(), and XrdCryptosslX509ExportChain().

+ Here is the caller graph for this function:

◆ ToString()

void XrdSutBucket::ToString ( XrdOucString s)

Definition at line 155 of file XrdSutBucket.cc.

156 {
157  // Convert content into a null terminated string
158  // (nb: the caller must be sure that the operation makes sense)
159 
160  s = "";
161  char *b = new char[size+1];
162  if (b) {
163  memcpy(b,buffer,size);
164  b[size] = 0;
165  s = (const char *)b;
166  delete[] b;
167  }
168 }

References buffer, and size.

Referenced by XrdSecProtocolgsi::Authenticate(), and XrdSecProtocolpwd::Authenticate().

+ Here is the caller graph for this function:

◆ Update() [1/2]

void XrdSutBucket::Update ( char *  nb = 0,
int  ns = 0,
int  ty = 0 
)

Definition at line 95 of file XrdSutBucket.cc.

96 {
97  // Update content
98 
99  if (membuf)
100  delete[] membuf;
101  buffer = membuf = nb;
102  size = ns;
103 
104  if (ty)
105  type = ty;
106 }

References buffer, size, and type.

Referenced by XrdCryptoCipher::Decrypt(), XrdCryptoRSA::DecryptPrivate(), XrdCryptoRSA::DecryptPublic(), XrdCryptoCipher::Encrypt(), XrdCryptoRSA::EncryptPrivate(), and XrdCryptoRSA::EncryptPublic().

+ Here is the caller graph for this function:

◆ Update() [2/2]

int XrdSutBucket::Update ( XrdOucString s,
int  ty = 0 
)

Definition at line 109 of file XrdSutBucket.cc.

110 {
111  // Update content
112  // Returns 0 if ok, -1 otherwise.
113 
114  if (membuf)
115  delete[] membuf;
116  membuf = buffer = 0;
117  if (s.length()) {
118  membuf = new char [s.length()];
119  if (membuf) {
120  memcpy(membuf,s.c_str(),s.length());
121  buffer = membuf;
122  size = s.length();
123  if (ty)
124  type = ty;
125  return 0;
126  }
127  }
128  return -1;
129 }

References buffer, XrdOucString::c_str(), XrdOucString::length(), size, and type.

+ Here is the call graph for this function:

Member Data Documentation

◆ buffer

◆ size

◆ type


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