00001 #ifndef __SUT_BUFFER_H__
00002 #define __SUT_BUFFER_H__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __SUT_BUCKLIST_H__
00032 #include "XrdSut/XrdSutBuckList.hh"
00033 #endif
00034
00035
00036
00037
00038
00039
00040
00041 class XrdOucString;
00042
00043 class XrdSutBuffer {
00044
00045 private:
00046
00047 XrdSutBuckList fBuckets;
00048 XrdOucString fOptions;
00049 XrdOucString fProtocol;
00050 kXR_int32 fStep;
00051
00052 public:
00053 XrdSutBuffer(const char *prot, const char *opts = 0)
00054 {fOptions = opts; fProtocol = prot; fStep = 0;}
00055 XrdSutBuffer(const char *buffer, kXR_int32 length);
00056
00057 virtual ~XrdSutBuffer();
00058
00059 int AddBucket(char *bp=0, int sz=0, int ty=0)
00060 { XrdSutBucket *b = new XrdSutBucket(bp,sz,ty);
00061 if (b) { fBuckets.PushBack(b); return 0;} return -1; }
00062 int AddBucket(XrdOucString s, int ty=0)
00063 { XrdSutBucket *b = new XrdSutBucket(s,ty);
00064 if (b) { fBuckets.PushBack(b); return 0;} return -1; }
00065 int AddBucket(XrdSutBucket *b)
00066 { if (b) { fBuckets.PushBack(b); return 0;} return -1; }
00067
00068 int UpdateBucket(const char *bp, int sz, int ty);
00069 int UpdateBucket(XrdOucString s, int ty);
00070
00071
00072 void Remove(XrdSutBucket *b) { fBuckets.Remove(b); }
00073
00074 void Dump(const char *stepstr = 0, bool all = false);
00075 void Message(const char *prepose = 0);
00076 int Serialized(char **buffer, char opt = 'n');
00077
00078 void Deactivate(kXR_int32 type);
00079
00080
00081 kXR_int32 MarshalBucket(kXR_int32 type, kXR_int32 code);
00082 kXR_int32 UnmarshalBucket(kXR_int32 type, kXR_int32 &code);
00083
00084 XrdSutBucket *GetBucket(kXR_int32 type, const char *tag = 0);
00085 XrdSutBuckList *GetBuckList() const { return (XrdSutBuckList *)&fBuckets; }
00086 int GetNBuckets() const { return fBuckets.Size(); }
00087 const char *GetOptions() const { return fOptions.c_str(); }
00088 const char *GetProtocol() const { return fProtocol.c_str(); }
00089 int GetStep() const { return (int)fStep; }
00090 void SetStep(int s) { fStep = (kXR_int32)s; }
00091 void IncrementStep() { fStep++; }
00092 };
00093
00094 #endif
00095