Browse Source

Update the interfaces of message entry.

git-svn-id: svn://bind10.isc.org/svn/bind10/branches/trac449@4027 e5f2f494-b856-4b98-b285-d166d9295462
Likun Zhang 14 years ago
parent
commit
b6b9f884f3
2 changed files with 38 additions and 5 deletions
  1. 17 1
      src/lib/cache/message_entry.cc
  2. 21 4
      src/lib/cache/message_entry.h

+ 17 - 1
src/lib/cache/message_entry.cc

@@ -23,10 +23,26 @@
 namespace isc {
 namespace cache {
 
-MessageEntry::MessageEntry()
+MessageEntry::MessageEntry(const isc::dns::Message&,
+                           boost::shared_ptr<RRsetCache> rrset_cache):
+    rrset_cache_(rrset_cache)
 {
+
 }
     
+void
+MessageEntry::generateMessage(const time_t&,
+                              const uint16_t,
+                              isc::dns::Message&)
+{
+
+}
+
+void
+MessageEntry::initMessageEntry(const isc::dns::Message&) {
+}
+
+
 } // namespace cache
 } // namespace isc
 

+ 21 - 4
src/lib/cache/message_entry.h

@@ -27,13 +27,23 @@ using namespace isc::nsas;
 
 namespace isc {
 namespace cache {
+
 class RRsetEntry;
+class RRsetCache;
 
 class MessageEntry : public NsasEntry<MessageEntry>, 
                      public Fetchable 
 {
 public:
-    MessageEntry();
+
+    /// \brief Initialize the message entry object with one dns 
+    /// message.
+    /// \param message The message used to initialize MessageEntry.
+    /// \param rrset_cache the pointer of RRsetCache. When one message
+    /// entry is created, some new rrset entries may be created/updated
+    /// if they doesn't exist in the rrset cache.
+    MessageEntry(const isc::dns::Message& message,
+                 boost::shared_ptr<RRsetCache> rrset_cache);
 
     /// \brief generate one dns message according 
     /// the rrsets information of the message.
@@ -42,21 +52,28 @@ public:
     ///        as "expire_time - time_now" (expire_time is the 
     ///        expiration time of the rrset).
     /// \param query_header the query message header.
-    void generateMessage(isc::dns::Message& response, 
-                         time_t* time_now,
-                         uint16_t query_header);
+    void generateMessage(const time_t& time_now,
+                         const uint16_t query_header,
+                         isc::dns::Message& response);
+protected:
+    // Initialize the message entry with dns message.
+    void initMessageEntry(const isc::dns::Message& message);
 
 private:
     time_t expire_time_;  // Expiration time of the message.
+
     std::string query_name_; // query name of the message.
     uint16_t query_class_; // query class of the message.
     uint16_t query_type_; // query type of message.
 
+    uint16_t query_header; // query header of the message.
     uint16_t query_count_; // query count in query section.
     uint16_t answer_count_; // rrset count in answer section.
     uint16_t authority_count_; // rrset count in authority section.
     uint16_t addition_count_; // rrset count in addition section.
+
     std::vector<boost::shared_ptr<RRsetEntry*> > rrsets_;
+    boost::shared_ptr<RRsetCache> rrset_cache_;
 };
     
 } // namespace cache