1:
2:
3: /*********************
4: * *
5: * PROJECT INCLUDES *
6: * *
7: *********************/
8:
9:
10: #include "rdata_raw.h"
11:
12:
13: using std::memcmp;
14: using std::strlen;
15: using WWWI::StringDuplicate;
16:
17:
18: /**************************
19: * *
20: * RDATANAME CONSTRUCTOR *
21: * *
22: **************************/
23:
24:
25: RDataRaw::RDataRaw() {
26: m_szBuffer = 0;
27: m_ucpBuffer = NULL;
28: }
29:
30:
31: /*****************
32: * *
33: * METHOD CLONE *
34: * *
35: *****************/
36:
37:
38: RDataPtr RDataRaw::Clone() const {
39: RDataRaw *rdpOut = new RDataRaw;
40: rdpOut->m_szBuffer = m_szBuffer;
41: rdpOut->m_ucpBuffer = new unsigned char[m_szBuffer];
42: memcpy(rdpOut->m_ucpBuffer,m_ucpBuffer,m_szBuffer);
43: return (RDataPtr)rdpOut;
44: }
45:
46:
47: /*******************
48: * *
49: * METHOD COMPARE *
50: * *
51: *******************/
52:
53:
54: bool RDataRaw::Compare(const RData &ci_rdr) const {
55: const RDataRaw *c_rdp = ci_rdr.As<RDataRaw>();
56: if (c_rdp->m_szBuffer!=m_szBuffer) return false;
57: return (memcmp(c_rdp->m_ucpBuffer,m_ucpBuffer,m_szBuffer)==0);
58: }
59:
60:
61: /****************
62: * *
63: * METHOD DUMP *
64: * *
65: ****************/
66:
67:
68: void RDataRaw::Dump(ostream &io_smr) const {
69: HexDump(io_smr,m_ucpBuffer,m_szBuffer,2,16);
70: }
71:
72:
73: /*******************
74: * *
75: * METHOD ISMATCH *
76: * *
77: *******************/
78:
79:
80: bool RDataRaw::IsMatch(RRType i_ty, RRClass i_cl) { return true; }
81:
82:
83: /*********************
84: * *
85: * METHOD READRDATA *
86: * *
87: *********************/
88:
89:
90: void RDataRaw::ReadRData(BufferConstPtr ci_dpp) {
91: unsigned short us;
92: ci_dpp->ReadNBO(us);
93: m_szBuffer = (size_t)us;
94: m_ucpBuffer = new unsigned char[m_szBuffer];
95: ci_dpp->ReadData(m_ucpBuffer,m_szBuffer);
96: }
97:
98:
99: /********************
100: * *
101: * METHOD SETRDATA *
102: * *
103: ********************/
104:
105:
106: void RDataRaw::SetRData(const char *ci_strRData) {
107: m_szBuffer = strlen(ci_strRData) + 1;
108: m_ucpBuffer = (unsigned char*)StringDuplicate(ci_strRData);
109: }
110:
111:
112: /**********************
113: * *
114: * METHOD WRITERDATA *
115: * *
116: **********************/
117:
118:
119: void RDataRaw::WriteRData(BufferPtr io_dpp) const {
120: io_dpp->WriteNBO((unsigned short)m_szBuffer);
121: io_dpp->WriteData(m_ucpBuffer,m_szBuffer);
122: }
123:
124:
125: /*************************
126: * *
127: * RDATANAME DESTRUCTOR *
128: * *
129: *************************/
130:
131:
132: RDataRaw::~RDataRaw() {
133: m_szBuffer = 0;
134: SoftDeleteArray(m_ucpBuffer);
135: }
136:
137:
138: