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: