Browse Source

[1455] cleanup, documentation

and removed a method in rrset that turned out to be unneeded
Jelte Jansen 13 years ago
parent
commit
b5bfaf8c7d
3 changed files with 13 additions and 7 deletions
  1. 0 1
      src/lib/dns/rrset.cc
  2. 4 5
      src/lib/dns/rrset.h
  3. 9 1
      src/lib/python/isc/ddns/session.py

+ 0 - 1
src/lib/dns/rrset.cc

@@ -260,7 +260,6 @@ public:
     ~BasicRdataIterator() {}
     ~BasicRdataIterator() {}
     virtual void first() { it_ = datavector_->begin(); }
     virtual void first() { it_ = datavector_->begin(); }
     virtual void next() { ++it_; }
     virtual void next() { ++it_; }
-    virtual bool currentEmpty() const { return (!(*it_)); }
     virtual const rdata::Rdata& getCurrent() const { return (**it_); }
     virtual const rdata::Rdata& getCurrent() const { return (**it_); }
     virtual bool isLast() const { return (it_ == datavector_->end()); }
     virtual bool isLast() const { return (it_ == datavector_->end()); }
 private:
 private:

+ 4 - 5
src/lib/dns/rrset.h

@@ -267,6 +267,8 @@ public:
     /// the resulting string with a trailing newline character.
     /// the resulting string with a trailing newline character.
     /// (following the BIND9 convention)
     /// (following the BIND9 convention)
     ///
     ///
+    /// If the class is not ANY or NONE, the RRset must contain some RDATA;
+    /// otherwise, an exception of class \c EmptyRRset will be thrown.
     /// If resource allocation fails, a corresponding standard exception
     /// If resource allocation fails, a corresponding standard exception
     /// will be thrown.
     /// will be thrown.
     /// The default implementation may throw other exceptions if the
     /// The default implementation may throw other exceptions if the
@@ -297,6 +299,8 @@ public:
     ///
     ///
     /// If resource allocation fails, a corresponding standard exception
     /// If resource allocation fails, a corresponding standard exception
     /// will be thrown.
     /// will be thrown.
+    /// If the class is not ANY or NONE, the RRset must contain some RDATA;
+    /// otherwise, an exception of class \c EmptyRRset will be thrown.
     /// The default implementation may throw other exceptions if the
     /// The default implementation may throw other exceptions if the
     /// \c toWire() method of the RDATA objects throws.
     /// \c toWire() method of the RDATA objects throws.
     /// If a derived class of \c AbstractRRset overrides the default
     /// If a derived class of \c AbstractRRset overrides the default
@@ -556,11 +560,6 @@ public:
     /// This method should never throw an exception.
     /// This method should never throw an exception.
     virtual void next() = 0;
     virtual void next() = 0;
 
 
-    /// \brief Check if 'current' is empty (in which case getCurrent() would
-    ///        fail
-    /// \return True if the current Rdata field is NULL, false if not
-    virtual bool currentEmpty() const = 0;
-
     /// \brief Return the current \c Rdata corresponding to the rdata cursor.
     /// \brief Return the current \c Rdata corresponding to the rdata cursor.
     ///
     ///
     /// \return A reference to an \c rdata::Rdata object corresponding
     /// \return A reference to an \c rdata::Rdata object corresponding

+ 9 - 1
src/lib/python/isc/ddns/session.py

@@ -197,6 +197,7 @@ class UpdateSession:
         '''Check whether an rrset with the given name and type exists. Class,
         '''Check whether an rrset with the given name and type exists. Class,
            TTL, and Rdata (if any) of the given RRset are ignored.
            TTL, and Rdata (if any) of the given RRset are ignored.
            RFC2136 Section 2.4.1.
            RFC2136 Section 2.4.1.
+           Returns True if the prerequisite is satisfied, False otherwise.
         '''
         '''
         _, finder = datasrc_client.find_zone(rrset.get_name())
         _, finder = datasrc_client.find_zone(rrset.get_name())
         result, _, _ = finder.find(rrset.get_name(), rrset.get_type(),
         result, _, _ = finder.find(rrset.get_name(), rrset.get_type(),
@@ -207,6 +208,7 @@ class UpdateSession:
         '''Check whether an rrset that matches name, type, and rdata(s) of the
         '''Check whether an rrset that matches name, type, and rdata(s) of the
            given rrset exists.
            given rrset exists.
            RFC2136 Section 2.4.2
            RFC2136 Section 2.4.2
+           Returns True if the prerequisite is satisfied, False otherwise.
         '''
         '''
         _, finder = datasrc_client.find_zone(rrset.get_name())
         _, finder = datasrc_client.find_zone(rrset.get_name())
         result, found_rrset, _ = finder.find(rrset.get_name(), rrset.get_type(),
         result, found_rrset, _ = finder.find(rrset.get_name(), rrset.get_type(),
@@ -231,6 +233,7 @@ class UpdateSession:
         '''Check whether no rrsets with the same name and type as the given
         '''Check whether no rrsets with the same name and type as the given
            rrset exist.
            rrset exist.
            RFC2136 Section 2.4.3.
            RFC2136 Section 2.4.3.
+           Returns True if the prerequisite is satisfied, False otherwise.
         '''
         '''
         return not self.__prereq_rrset_exists(datasrc_client, rrset)
         return not self.__prereq_rrset_exists(datasrc_client, rrset)
 
 
@@ -238,6 +241,7 @@ class UpdateSession:
         '''Check whether the name of the given RRset is in use (i.e. has
         '''Check whether the name of the given RRset is in use (i.e. has
            1 or more RRs).
            1 or more RRs).
            RFC2136 Section 2.4.4
            RFC2136 Section 2.4.4
+           Returns True if the prerequisite is satisfied, False otherwise.
         '''
         '''
         _, finder = datasrc_client.find_zone(rrset.get_name())
         _, finder = datasrc_client.find_zone(rrset.get_name())
         result, rrsets, flags = finder.find_all(rrset.get_name(),
         result, rrsets, flags = finder.find_all(rrset.get_name(),
@@ -252,12 +256,16 @@ class UpdateSession:
         '''Check whether the name of the given RRset is not in use (i.e. does
         '''Check whether the name of the given RRset is not in use (i.e. does
            not exist at all, or is an empty nonterminal.
            not exist at all, or is an empty nonterminal.
            RFC2136 Section 2.4.5.
            RFC2136 Section 2.4.5.
+           Returns True if the prerequisite is satisfied, False otherwise.
         '''
         '''
         return not self.__prereq_name_in_use(datasrc_client, rrset)
         return not self.__prereq_name_in_use(datasrc_client, rrset)
 
 
     def __check_prerequisites(self, datasrc_client, zname, zclass):
     def __check_prerequisites(self, datasrc_client, zname, zclass):
         '''Check the prerequisites section of the UPDATE Message.
         '''Check the prerequisites section of the UPDATE Message.
-           RFC2136 Section 2.4'''
+           RFC2136 Section 2.4.
+           Returns a dns Rcode signaling either no error (Rcode.NOERROR())
+           or that one of the prerequisites failed (any other Rcode).
+        '''
         for rrset in self.__message.get_section(SECTION_PREREQUISITE):
         for rrset in self.__message.get_section(SECTION_PREREQUISITE):
             # First check if the name is in the zone
             # First check if the name is in the zone
             relation = rrset.get_name().compare(zname).get_relation()
             relation = rrset.get_name().compare(zname).get_relation()