XRootD
Loading...
Searching...
No Matches
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
kXR_int32 size

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}
int length() const
const char * c_str() 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)
#define PRINT(y)
const char * XrdSutBuckStr(int kbck)
Definition XrdSutAux.cc:121
#define XrdSutPRINTLEN
Definition XrdSutAux.hh:52
static kXR_int32 XrdSutCharMsk[4][4]

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: