}
}
+unsigned int
+RRset::toWire(OutputBuffer& buffer) const {
+ unsigned int rrs_written;
+
+ rrs_written = rrsetToWire<OutputBuffer>(*this, buffer, 0);
+ if (rrsig_) {
+ rrs_written += rrsetToWire<OutputBuffer>(*(rrsig_.get()), buffer, 0);
+ }
+
+ return (rrs_written);
+}
+
+unsigned int
+RRset::toWire(AbstractMessageRenderer& renderer) const {
+ unsigned int rrs_written;
+
+ rrs_written =
+ rrsetToWire<AbstractMessageRenderer>(*this, renderer,
+ renderer.getLengthLimit());
+ if (rrsig_) {
+ rrs_written +=
+ rrsetToWire<AbstractMessageRenderer>(*(rrsig_.get()), renderer,
+ renderer.getLengthLimit());
+ }
+
+ if (getRdataCount() + getRRsigDataCount() > rrs_written) {
+ renderer.setTruncated();
+ }
+
+ return (rrs_written);
+}
+
namespace {
class BasicRdataIterator : public RdataIterator {
private:
virtual ~RRset();
+ /// \brief Render the RRset in the wire format with name compression and
+ /// truncation handling.
+ ///
+ /// See \c AbstractRRset::toWire(MessageRenderer&)const.
+ virtual unsigned int toWire(AbstractMessageRenderer& renderer) const;
+
+ /// \brief Render the RRset in the wire format without any compression.
+ ///
+ /// See \c AbstractRRset::toWire(OutputBuffer&)const.
+ virtual unsigned int toWire(isc::util::OutputBuffer& buffer) const;
+
/// \brief Updates the owner name of the \c RRset, including RRSIGs if any
virtual void setName(const Name& n) {
BasicRRset::setName(n);