50                      RRType(typeCode) << 
" RDATA: 0-length character string");
 
   55            if (rdata_len < 
static_cast<size_t>(len) + 1) {
 
   58                          " RDATA: character string length is too large: " <<
 
   59                          static_cast<int>(len));
 
   61            std::vector<uint8_t> 
data(len + 1);
 
   64            string_list_.push_back(
data);
 
   66            rdata_len -= (len + 1);
 
   67        } 
while (rdata_len > 0);
 
 
   75        std::istringstream ss(txtstr);
 
   80            buildFromTextHelper(lexer);
 
   83                          RRType(typeCode) << 
" RDATA from '" << txtstr <<
 
   88                      RRType(typeCode) << 
" RDATA from '" << txtstr << 
"': " 
 
  101        buildFromTextHelper(lexer);
 
 
  113            string_list_.push_back(std::vector<uint8_t>());
 
  120        if (string_list_.empty()) {
 
  122                      RRType(typeCode) << 
" RDATA: empty input");
 
  131        string_list_(other.string_list_)
 
 
  140        for (std::vector<std::vector<uint8_t> >::const_iterator it =
 
  141                 string_list_.begin();
 
  142             it != string_list_.end();
 
  145            buffer.
writeData(&(*it)[0], (*it).size());
 
 
  156        for (std::vector<std::vector<uint8_t> >::const_iterator it =
 
  157                 string_list_.begin();
 
  158             it != string_list_.end();
 
  161            renderer.
writeData(&(*it)[0], (*it).size());
 
 
  172        for (std::vector<std::vector<uint8_t> >::const_iterator it =
 
  173                 string_list_.begin(); it != string_list_.end(); ++it)
 
 
  201        uint8_t 
const* 
const this_data = (uint8_t 
const*)this_buffer.
getData();
 
  202        const size_t this_len = this_buffer.
getLength();
 
  205        other.
toWire(other_buffer);
 
  206        uint8_t 
const* 
const other_data
 
  207                                      = (uint8_t 
const*)other_buffer.
getData();
 
  208        const size_t other_len = other_buffer.
getLength();
 
  210        const size_t cmplen = std::min(this_len, other_len);
 
  211        const int cmp = memcmp(this_data, other_data, cmplen);
 
  216            return ((this_len == other_len) ? 0 :
 
  217                    (this_len < other_len) ? -1 : 1);
 
 
  224    std::vector<std::vector<uint8_t> > string_list_;
 
 
virtual const char * what() const
Returns a C-style character string of the cause of the exception.
The AbstractMessageRenderer class is an abstract base class that provides common interfaces for rende...
void writeData(const void *data, size_t len)
Copy an arbitrary length of data into the internal buffer of the renderer object.
Exception thrown from a wrapper version of MasterLexer::getNextToken() for non fatal errors.
Tokenizer for parsing DNS master files.
void ungetToken()
Return the last token back to the lexer.
bool pushSource(const char *filename, std::string *error=0)
Open a file and make it the current input source of MasterLexer.
const MasterToken & getNextToken(Options options=NONE)
Parse and return another token from the input.
@ QSTRING
A single string quoted by double-quotes (").
@ END_OF_FILE
End of file detected.
Type getType() const
Return the token type.
const StringRegion & getStringRegion() const
Return the value of a string-variant token.
The RRType class encapsulates DNS resource record types.
A standard DNS module exception that is thrown if RDATA parser encounters an invalid or inconsistent ...
A standard DNS module exception that is thrown if RDATA parser fails to recognize a given textual rep...
TXTLikeImpl(const TXTLikeImpl &other)
The copy constructor.
TXTLikeImpl(util::InputBuffer &buffer, size_t rdata_len)
Constructor from wire-format data.
int compare(const TXTLikeImpl &other) const
Compare two instances of TXT-like RDATA.
std::string toText() const
Convert the TXT-like data to a string.
TXTLikeImpl(const std::string &txtstr)
Constructor from string.
TXTLikeImpl(MasterLexer &lexer)
Constructor using the master lexer.
void toWire(util::OutputBuffer &buffer) const
Render the TXT-like data in the wire format to an OutputBuffer object.
void toWire(AbstractMessageRenderer &renderer) const
Render the TXT-like data in the wire format to an AbstractMessageRenderer object.
The OutputBuffer class is a buffer abstraction for manipulating mutable data.
void writeData(const void *data, size_t len)
Copy an arbitrary length of data into the buffer.
const uint8_t * getData() const
Return a pointer to the head of the data stored in the buffer.
size_t getLength() const
Return the length of data written in the buffer.
#define isc_throw(type, stream)
A shortcut macro to insert known values into exception arguments.
std::string charStringToString(const CharString &char_string)
Convert a CharString into a textual DNS character-string.
void stringToCharString(const MasterToken::StringRegion &str_region, CharString &result)
Convert a DNS character-string into corresponding binary data.
const size_t MAX_RDLENGTH
Possible maximum length of RDATA, which is the maximum unsigned 16 bit value.
Defines the logger used by the top-level component of kea-lfc.