33 #include <netinet/in.h>
34 #include <sys/types.h>
55 EPNAME(
"Buffer::XrdSutBuffer");
66 if (!strncmp(buf,
"&P=",3)) {
72 while (buf[cur+k] && buf[cur+k] !=
',' &&
75 PRINT(
"no protocol name - do nothing");
80 strncpy(proto,buf+cur,k);
88 while ((cur+k) < len && buf[cur+k])
91 char *
opts =
new char[k+1];
93 strncpy(
opts,buf+cur,k);
110 PRINT(
"no protocol name: do nothing");
124 memcpy(&step,&buf[cur],
sizeof(
kXR_int32));
144 memcpy(&type,&buf[cur],
sizeof(
kXR_int32));
157 memcpy(&blen,&buf[cur],
sizeof(
kXR_int32));
163 if ((cur-1+blen) > ltot)
171 if ((buck =
new char[blen])) {
172 memcpy(buck,&buf[cur],blen);
177 <<
" (size: "<<blen<<
", !buck:"<<(!buck)<<
")");
180 PRINT(
"error allocating buffer for bucket: "
196 EPNAME(
"Buffer::~XrdSutBuffer");
203 bp = fBuckets.
Next();
213 EPNAME(
"Buffer::UpdateBucket");
219 DEBUG(
"Out-Of-Memory allocating bucket");
246 PRINT(
"//-----------------------------------------------------//");
248 PRINT(
"// XrdSutBuffer DUMP //")
251 int nbuck = fBuckets.
Size();
253 PRINT(
"// Buffer : " <<
this);
259 PRINT(
"// Options : none");
262 PRINT(
"// Step : " <<stepstr);
264 PRINT(
"// Step : " <<fStep);
267 PRINT(
"// Dumping active buckets only ");
269 PRINT(
"// # of buckets : " <<nbuck);
278 PRINT(
"// buck: " <<kb++);
282 bp = fBuckets.
Next();
284 if (!all)
PRINT(
"// # active buckets found: " << kb);
286 PRINT(
"//-----------------------------------------------------//");
305 std::cerr << premsg << std::endl;
309 std::cerr << msg << std::endl;
313 bp = fBuckets.
Next();
325 EPNAME(
"Buffer::MarshalBucket");
360 EPNAME(
"Buffer::UnmarshalBucket");
399 int ltag = (tag) ? strlen(tag) : 0;
404 if (type == bp->
type && (!tag || (ltag < bp->size &&
405 !strncmp(bp->
buffer,tag,ltag) &&
406 (bp->
buffer)[ltag] ==
'\0')))
409 bp = fBuckets.
Next();
426 if (type == bp->
type) {
429 }
else if (type == -1) {
433 bp = fBuckets.
Next();
445 EPNAME(
"Buffer::Serialized");
450 DEBUG(
"invalid input argument");
466 bp = fBuckets.
Next();
471 *buffer = (opt ==
'n') ? (
new char[blen]) : (
char *)malloc(blen);
474 char *tbuf = *buffer;
480 tbuf[fProtocol.
length()] = 0;
481 cur += fProtocol.
length() + 1;
486 memcpy(tbuf+cur,&step,
sizeof(
kXR_int32));
491 bp = fBuckets.
Begin();
495 memcpy(tbuf+cur,&type,
sizeof(
kXR_int32));
498 memcpy(tbuf+cur,&size,
sizeof(
kXR_int32));
504 bp = fBuckets.
Next();
510 memcpy(tbuf+cur,<mp,
sizeof(
kXR_int32));
#define XrdSecPROTOIDSIZE
const char * XrdSutBuckStr(int kbck)
const char * c_str() const
void PushBack(XrdSutBucket *b)
int SetBuf(const char *nb=0, int ns=0)
int AddBucket(char *bp=0, int sz=0, int ty=0)
int UpdateBucket(const char *bp, int sz, int ty)
void Message(const char *prepose=0)
int Serialized(char **buffer, char opt='n')
XrdSutBuffer(const char *prot, const char *opts=0)
void Dump(const char *stepstr=0, bool all=false)
XrdSutBucket * GetBucket(kXR_int32 type, const char *tag=0)
kXR_int32 MarshalBucket(kXR_int32 type, kXR_int32 code)
void Deactivate(kXR_int32 type)
kXR_int32 UnmarshalBucket(kXR_int32 type, kXR_int32 &code)