Commit 8f5f77f8 authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

[trac1060] Make Query use abstract DataSourceClient

It turns out to be simple search & replace, it didn't use any in-memory
specific features. The rest of Auth still uses hardcoded in-memory, as
it needs to load it, etc.
parent 34cfc02f
......@@ -19,7 +19,7 @@
#include <dns/rcode.h>
#include <dns/rdataclass.h>
#include <datasrc/memory_datasrc.h>
#include <datasrc/client.h>
#include <auth/query.h>
......@@ -126,8 +126,8 @@ Query::process() const {
const bool qtype_is_any = (qtype_ == RRType::ANY());
response_.setHeaderFlag(Message::HEADERFLAG_AA, false);
const InMemoryClient::FindResult result =
memory_client_.findZone(qname_);
const DataSourceClient::FindResult result =
datasrc_client_.findZone(qname_);
// If we have no matching authoritative zone for the query name, return
// REFUSED. In short, this is to be compatible with BIND 9, but the
......
......@@ -26,7 +26,7 @@ class RRset;
}
namespace datasrc {
class InMemoryClient;
class DataSourceClient;
}
namespace auth {
......@@ -36,10 +36,8 @@ namespace auth {
///
/// Many of the design details for this class are still in flux.
/// We'll revisit and update them as we add more functionality, for example:
/// - memory_client parameter of the constructor. It is a data source that
/// uses in memory dedicated backend.
/// - as a related point, we may have to pass the RR class of the query.
/// in the initial implementation the RR class is an attribute of memory
/// in the initial implementation the RR class is an attribute of
/// datasource and omitted. It's not clear if this assumption holds with
/// generic data sources. On the other hand, it will help keep
/// implementation simpler, and we might rather want to modify the design
......@@ -51,7 +49,7 @@ namespace auth {
/// separate attribute setter.
/// - likewise, we'll eventually need to do per zone access control, for which
/// we need querier's information such as its IP address.
/// - memory_client and response may better be parameters to process() instead
/// - datasrc_client and response may better be parameters to process() instead
/// of the constructor.
///
/// <b>Note:</b> The class name is intentionally the same as the one used in
......@@ -135,15 +133,15 @@ public:
///
/// This constructor never throws an exception.
///
/// \param memory_client The memory datasource wherein the answer to the query is
/// \param datasrc_client The datasource wherein the answer to the query is
/// to be found.
/// \param qname The query name
/// \param qtype The RR type of the query
/// \param response The response message to store the answer to the query.
Query(const isc::datasrc::InMemoryClient& memory_client,
Query(const isc::datasrc::DataSourceClient& datasrc_client,
const isc::dns::Name& qname, const isc::dns::RRType& qtype,
isc::dns::Message& response) :
memory_client_(memory_client), qname_(qname), qtype_(qtype),
datasrc_client_(datasrc_client), qname_(qname), qtype_(qtype),
response_(response)
{}
......@@ -157,7 +155,7 @@ public:
/// successful search would result in adding a corresponding RRset to
/// the answer section of the response.
///
/// If no matching zone is found in the memory datasource, the RCODE of
/// If no matching zone is found in the datasource, the RCODE of
/// SERVFAIL will be set in the response.
/// <b>Note:</b> this is different from the error code that BIND 9 returns
/// by default when it's configured as an authoritative-only server (and
......@@ -208,7 +206,7 @@ public:
};
private:
const isc::datasrc::InMemoryClient& memory_client_;
const isc::datasrc::DataSourceClient& datasrc_client_;
const isc::dns::Name& qname_;
const isc::dns::RRType& qtype_;
isc::dns::Message& response_;
......
......@@ -93,7 +93,7 @@ const char* const other_zone_rrs =
"mx.delegation.example.com. 3600 IN A 192.0.2.100\n";
// This is a mock Zone class for testing.
// It is a derived class of Zone for the convenient of tests.
// It is a derived class of ZoneFinder for the convenient of tests.
// Its find() method emulates the common behavior of protocol compliant
// zone classes, but simplifies some minor cases and also supports broken
// behavior.
......@@ -237,6 +237,10 @@ protected:
memory_client.addZone(ZoneFinderPtr(mock_finder));
}
MockZoneFinder* mock_finder;
// We use InMemoryClient here. We could have some kind of mock client
// here, but historically, the Query supported only InMemoryClient
// (originally named MemoryDataSrc) and was tested with it, so we keep
// it like this for now.
InMemoryClient memory_client;
const Name qname;
const RRClass qclass;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment