BIND 10 #1747: refactor auth::Query so it's reusable
BIND 10 Development
do-not-reply at isc.org
Sat Mar 3 06:26:23 UTC 2012
#1747: refactor auth::Query so it's reusable
-------------------------------------+-------------------------------------
Reporter: jinmei | Owner:
Type: task | Status: new
Priority: critical | Milestone: Next-
Component: b10-auth | Sprint-Proposed
Sensitive: 0 | Keywords:
Sub-Project: DNS | Defect Severity: N/A
Estimated Difficulty: 0 | Feature Depending on Ticket: auth
Total Hours: 0 | performance
| Add Hours to Ticket: 0
| Internal?: 0
-------------------------------------+-------------------------------------
The auth::Query class is now (going to) use internal resource
to hold RRsets with #1607. In #1607 I used a local
vector<ConstRRsetPtr> object, but it's not efficient to allocate it
for every query.
I propose making auth::Query reusable and reusing the internal
resource within the class. Then the auth server creates a Query
object on its initialization and keeps using it. Make sure the
internal resource is always cleared for every query, especially when
some query processing results in an exception. It would also be
better to ensure the capacity of the vector(s) won't exceed some
limit after cleanup.
This would be a relatively easy task, so I'd also make one more
refactoring in this ticket: using separate vectors for the answer and
authority sections and storing RRsets for these sections in the middle
of the query processing. Then we can conslidate the response message
construction at the end of the method:
{{{#!c++
for_each(answers.begin(), answers.end(),
RRsetInserter(response_, Message::SECTION_ANSWER, dnssec_));
for_each(authorities.begin(), authorities.end(),
RRsetInserter(response_, Message::SECTION_AUTHORITY,
dnssec_));
for_each(additionals.begin(), additionals.end(),
RRsetInserter(response_, Message::SECTION_ADDITIONAL,
dnssec_));
]}}
which would be clearer, and will make #1688 easier to handle.
It's not direct dependency, but it's probably better to start this
task after #1607.
--
Ticket URL: <http://bind10.isc.org/ticket/1747>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list