123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366 |
- #ifndef __MEMORY_DATA_SOURCE_H
- #define __MEMORY_DATA_SOURCE_H 1
- #include <string>
- #include <boost/noncopyable.hpp>
- #include <datasrc/zonetable.h>
- #include <datasrc/client.h>
- #include <cc/data.h>
- namespace isc {
- namespace dns {
- class Name;
- class RRsetList;
- };
- namespace datasrc {
- class InMemoryZoneFinder : boost::noncopyable, public ZoneFinder {
-
-
- public:
-
-
-
-
-
-
-
-
- InMemoryZoneFinder(const isc::dns::RRClass& rrclass,
- const isc::dns::Name& origin);
-
- virtual ~InMemoryZoneFinder();
-
-
- virtual isc::dns::Name getOrigin() const;
-
- virtual isc::dns::RRClass getClass() const;
-
- virtual ZoneFinderContextPtr find(const isc::dns::Name& name,
- const isc::dns::RRType& type,
- const FindOptions options =
- FIND_DEFAULT);
-
-
-
-
-
- virtual ZoneFinderContextPtr findAll(
- const isc::dns::Name& name,
- std::vector<isc::dns::ConstRRsetPtr>& target,
- const FindOptions options = FIND_DEFAULT);
-
-
-
- virtual FindNSEC3Result
- findNSEC3(const isc::dns::Name& name, bool recursive);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- result::Result add(const isc::dns::ConstRRsetPtr& rrset);
-
-
-
- struct NullRRset : public InvalidParameter {
- NullRRset(const char* file, size_t line, const char* what) :
- InvalidParameter(file, line, what)
- { }
- };
-
-
-
-
-
-
-
-
-
- struct AddError : public InvalidParameter {
- AddError(const char* file, size_t line, const char* what) :
- InvalidParameter(file, line, what)
- { }
- };
-
-
-
-
-
-
-
-
-
-
-
-
- const std::string getFileName() const;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- void load(const std::string& filename);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- void load(ZoneIterator& iterator);
-
-
-
-
-
-
-
- void swap(InMemoryZoneFinder& zone_finder);
- private:
-
-
- struct InMemoryZoneFinderImpl;
- InMemoryZoneFinderImpl* impl_;
-
-
-
-
-
- friend class InMemoryClient;
-
-
-
-
- class Context;
- };
- class InMemoryClient : public DataSourceClient {
- public:
-
-
-
-
-
-
-
-
-
- InMemoryClient();
-
- ~InMemoryClient();
-
-
-
-
-
-
- virtual unsigned int getZoneCount() const;
-
-
-
-
-
-
-
-
-
-
-
-
-
- result::Result addZone(ZoneFinderPtr zone_finder);
-
-
-
-
-
- virtual FindResult findZone(const isc::dns::Name& name) const;
-
- virtual ZoneIteratorPtr getIterator(const isc::dns::Name& name,
- bool separate_rrs = false) const;
-
-
-
-
-
-
-
-
- virtual ZoneUpdaterPtr getUpdater(const isc::dns::Name& name,
- bool replace, bool journaling = false)
- const;
- virtual std::pair<ZoneJournalReader::Result, ZoneJournalReaderPtr>
- getJournalReader(const isc::dns::Name& zone, uint32_t begin_serial,
- uint32_t end_serial) const;
- private:
-
-
- class InMemoryClientImpl;
- InMemoryClientImpl* impl_;
- };
- extern "C" DataSourceClient* createInstance(isc::data::ConstElementPtr config,
- std::string& error);
- extern "C" void destroyInstance(DataSourceClient* instance);
- }
- }
- #endif
|