BIND 10 trac404, updated. 6e2078ecc6e3f91676631b3b3f9c4be7b5584853 [trac404] Dox update
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Apr 13 11:56:24 UTC 2011
The branch, trac404 has been updated
via 6e2078ecc6e3f91676631b3b3f9c4be7b5584853 (commit)
via 3384859c8e15572519887abeb44d3ff295dbd178 (commit)
from a140e9b97e208ce30d0c3fb51f14dd248f307b1d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 6e2078ecc6e3f91676631b3b3f9c4be7b5584853
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Wed Apr 13 13:56:10 2011 +0200
[trac404] Dox update
commit 3384859c8e15572519887abeb44d3ff295dbd178
Author: Michal 'vorner' Vaner <michal.vaner at nic.cz>
Date: Wed Apr 13 13:48:27 2011 +0200
[trac404] Make the buffer private
-----------------------------------------------------------------------
Summary of changes:
src/lib/dns/messagerenderer.cc | 28 +++++++++++---------------
src/lib/dns/messagerenderer.h | 31 ++++++++++++++++++++--------
src/lib/dns/rdatafields.cc | 27 +++++++-----------------
src/lib/dns/tests/rdatafields_unittest.cc | 2 -
4 files changed, 42 insertions(+), 46 deletions(-)
-----------------------------------------------------------------------
diff --git a/src/lib/dns/messagerenderer.cc b/src/lib/dns/messagerenderer.cc
index 398f0be..de6859c 100644
--- a/src/lib/dns/messagerenderer.cc
+++ b/src/lib/dns/messagerenderer.cc
@@ -180,18 +180,8 @@ MessageRenderer::~MessageRenderer() {
}
void
-MessageRenderer::skip(const size_t len) {
- buffer_.skip(len);
-}
-
-void
-MessageRenderer::trim(const size_t len) {
- buffer_.trim(len);
-}
-
-void
MessageRenderer::clear() {
- buffer_.clear();
+ AbstractMessageRenderer::clear();
impl_->nbuffer_.clear();
impl_->nodeset_.clear();
impl_->msglength_limit_ = 512;
@@ -254,15 +244,15 @@ MessageRenderer::writeName(const Name& name, const bool compress) {
}
// Record the current offset before extending the buffer.
- const size_t offset = buffer_.getLength();
+ const size_t offset = getBuffer().getLength();
// Write uncompress part...
- buffer_.writeData(impl_->nbuffer_.getData(),
- compress ? i : impl_->nbuffer_.getLength());
+ writeData(impl_->nbuffer_.getData(),
+ compress ? i : impl_->nbuffer_.getLength());
if (compress && n != notfound) {
// ...and compression pointer if available.
uint16_t pointer = (*n).pos_;
pointer |= Name::COMPRESS_POINTER_MARK16;
- buffer_.writeUint16(pointer);
+ writeUint16(pointer);
}
// Finally, add to the set the newly rendered name and its ancestors that
@@ -274,11 +264,17 @@ MessageRenderer::writeName(const Name& name, const bool compress) {
if (offset + j > Name::MAX_COMPRESS_POINTER) {
break;
}
- impl_->nodeset_.insert(NameCompressNode(*this, buffer_,
+ impl_->nodeset_.insert(NameCompressNode(*this, getBuffer(),
offset + j,
impl_->nbuffer_.getLength() -
j));
}
}
+
+void
+AbstractMessageRenderer::clear() {
+ buffer_.clear();
+}
+
}
}
diff --git a/src/lib/dns/messagerenderer.h b/src/lib/dns/messagerenderer.h
index ea2ef84..acdc5a9 100644
--- a/src/lib/dns/messagerenderer.h
+++ b/src/lib/dns/messagerenderer.h
@@ -100,9 +100,24 @@ protected:
///
/// This is intentionally defined as \c protected as this base class should
/// never be instantiated (except as part of a derived class).
+ /// \param buffer The buffer where the data should be rendered into.
+ /// \todo We might want to revisit this API at some point and remove the
+ /// buffer parameter. In that case it would create it's own buffer and
+ /// a function to extract the data would be available instead. It seems
+ /// like a cleaner design, but it's left undone until we would actually
+ /// benefit from the change.
AbstractMessageRenderer(OutputBuffer& buffer) :
buffer_(buffer)
{}
+public:
+ /// \brief The destructor.
+ virtual ~AbstractMessageRenderer() {}
+ //@}
+protected:
+ /// \brief Return the output buffer we render into.
+ const OutputBuffer& getBuffer() const { return (buffer_); }
+ OutputBuffer& getBuffer() { return (buffer_); }
+private:
/// \short Buffer to store data
///
/// It was decided that there's no need to have this in every subclass,
@@ -110,10 +125,6 @@ protected:
/// chance to optimise.
OutputBuffer& buffer_;
public:
- /// \brief The destructor.
- virtual ~AbstractMessageRenderer() {}
- //@}
-
///
/// \name Getter Methods
///
@@ -196,7 +207,9 @@ public:
/// that is to be filled in later, e.g, by \ref writeUint16At().
///
/// \param len The length of the gap to be inserted in bytes.
- virtual void skip(size_t len) = 0;
+ void skip(size_t len) {
+ buffer_.skip(len);
+ }
/// \brief Trim the specified length of data from the end of the internal
/// buffer.
@@ -208,13 +221,15 @@ public:
/// be thrown.
///
/// \param len The length of data that should be trimmed.
- virtual void trim(size_t len) = 0;
+ void trim(size_t len) {
+ buffer_.trim(len);
+ }
/// \brief Clear the internal buffer and other internal resources.
///
/// This method can be used to re-initialize and reuse the renderer
/// without constructing a new one.
- virtual void clear() = 0;
+ virtual void clear();
/// \brief Write an unsigned 8-bit integer into the internal buffer.
///
@@ -312,8 +327,6 @@ public:
virtual void setTruncated();
virtual void setLengthLimit(size_t len);
virtual void setCompressMode(CompressMode mode);
- virtual void skip(size_t len);
- virtual void trim(size_t len);
virtual void clear();
virtual void writeName(const Name& name, bool compress = true);
private:
diff --git a/src/lib/dns/rdatafields.cc b/src/lib/dns/rdatafields.cc
index 9013d08..c33b91e 100644
--- a/src/lib/dns/rdatafields.cc
+++ b/src/lib/dns/rdatafields.cc
@@ -62,8 +62,7 @@ namespace {
// Technically, this use of inheritance may be considered a violation of
// Liskov Substitution Principle in that it doesn't actually compress domain
// names, and some of the methods are not expected to be used.
-// In fact, skip() or trim() may not be well defined for the purpose of this
-// class.
+// In fact, skip() or trim() may not be make much sense in this context.
// Nevertheless we keep this idea at the moment. Since the usage is limited
// (it's only used within this file, and only used with \c Rdata variants),
// it's hopefully an acceptable practice.
@@ -75,8 +74,8 @@ public:
mode_(CASE_INSENSITIVE), last_data_pos_(0)
{}
virtual ~RdataFieldComposer() {}
- virtual const void* getData() const { return (buffer_.getData()); }
- virtual size_t getLength() const { return (buffer_.getLength()); }
+ virtual const void* getData() const { return (getBuffer().getData()); }
+ virtual size_t getLength() const { return (getBuffer().getLength()); }
virtual bool isTruncated() const { return (truncated_); }
virtual size_t getLengthLimit() const { return (length_limit_); }
virtual CompressMode getCompressMode() const { return (mode_); }
@@ -88,25 +87,15 @@ public:
const RdataFields::Type field_type =
compress ? RdataFields::COMPRESSIBLE_NAME :
RdataFields::INCOMPRESSIBLE_NAME;
- name.toWire(buffer_);
+ name.toWire(getBuffer());
fields_.push_back(RdataFields::FieldSpec(field_type,
name.getLength()));
- last_data_pos_ = buffer_.getLength();
+ last_data_pos_ = getBuffer().getLength();
}
virtual void clear() {
isc_throw(Unexpected, "unexpected clear() for RdataFieldComposer");
}
- virtual void skip(size_t) {
- isc_throw(Unexpected, "unexpected skip() for RdataFieldComposer");
- }
- virtual void trim(size_t) {
- isc_throw(Unexpected, "unexpected trim() for RdataFieldComposer");
- }
- virtual void writeUint16At(uint16_t, size_t) {
- isc_throw(Unexpected,
- "unexpected writeUint16At() for RdataFieldComposer");
- }
bool truncated_;
size_t length_limit_;
CompressMode mode_;
@@ -121,7 +110,7 @@ public:
size_t last_data_pos_;
void extendData() {
// No news, return to work
- if (buffer_.getLength() == last_data_pos_) {
+ if (getBuffer().getLength() == last_data_pos_) {
return;
}
// The new bytes are just ordinary uninteresting data
@@ -129,8 +118,8 @@ public:
fields_.push_back(RdataFields::FieldSpec(RdataFields::DATA, 0));
}
// We added this much data from last time
- fields_.back().len += buffer_.getLength() - last_data_pos_;
- last_data_pos_ = buffer_.getLength();
+ fields_.back().len += getBuffer().getLength() - last_data_pos_;
+ last_data_pos_ = getBuffer().getLength();
}
};
diff --git a/src/lib/dns/tests/rdatafields_unittest.cc b/src/lib/dns/tests/rdatafields_unittest.cc
index dec0dc4..5913016 100644
--- a/src/lib/dns/tests/rdatafields_unittest.cc
+++ b/src/lib/dns/tests/rdatafields_unittest.cc
@@ -368,7 +368,5 @@ private:
TEST(RdataFieldComposerTest, unusedMethods) {
EXPECT_THROW(RdataFields(DummyRdata(DummyRdata::CLEAR)), isc::Unexpected);
- EXPECT_THROW(RdataFields(DummyRdata(DummyRdata::SKIP)), isc::Unexpected);
- EXPECT_THROW(RdataFields(DummyRdata(DummyRdata::TRIM)), isc::Unexpected);
}
}
More information about the bind10-changes
mailing list