Browse Source

[1600] The messageRedererHandle class was deleted,and used the
suboptimal solution instead.

Xie Jiagui 13 years ago
parent
commit
699068ef14
3 changed files with 13 additions and 97 deletions
  1. 12 12
      src/bin/auth/auth_srv.cc
  2. 1 1
      src/lib/dns/messagerenderer.cc
  3. 0 84
      src/lib/dns/messagerendererhandle.h

+ 12 - 12
src/bin/auth/auth_srv.cc

@@ -36,7 +36,7 @@
 
 #include <dns/edns.h>
 #include <dns/exceptions.h>
-#include <dns/messagerendererhandle.h>
+#include <dns/messagerenderer.h>
 #include <dns/name.h>
 #include <dns/question.h>
 #include <dns/opcode.h>
@@ -99,7 +99,7 @@ public:
 
     IOService io_service_;
 
-    MessageRendererHandle renderer_handle_;
+    MessageRenderer renderer_;
     /// Currently non-configurable, but will be.
     static const uint16_t DEFAULT_LOCAL_UDPSIZE = 4096;
 
@@ -557,18 +557,18 @@ AuthSrvImpl::processNormalQuery(const IOMessage& io_message, MessagePtr message,
         return (true);
     }
 
-    renderer_handle_.setBuffer(buffer.get());
+    renderer_.clear();
+    renderer_.setBuffer(buffer.get());
     const bool udp_buffer =
         (io_message.getSocket().getProtocol() == IPPROTO_UDP);
-    renderer_handle_.setLengthLimit(udp_buffer ? remote_bufsize : 65535);
+    renderer_.setLengthLimit(udp_buffer ? remote_bufsize : 65535);
     if (tsig_context.get() != NULL) {
-        message->toWire(renderer_handle_.getRenderer(), *tsig_context);
+        message->toWire(renderer_, *tsig_context);
     } else {
-        message->toWire(renderer_handle_.getRenderer());
+        message->toWire(renderer_);
     }
-    renderer_handle_.setBuffer(NULL);
     LOG_DEBUG(auth_logger, DBG_AUTH_MESSAGES, AUTH_SEND_NORMAL_RESPONSE)
-              .arg(renderer_handle_.getLength()).arg(message->toText());
+              .arg(renderer_.getLength()).arg(message->toText());
 
     return (true);
 }
@@ -687,13 +687,13 @@ AuthSrvImpl::processNotify(const IOMessage& io_message, MessagePtr message,
     message->setHeaderFlag(Message::HEADERFLAG_AA);
     message->setRcode(Rcode::NOERROR());
 
-    renderer_handle_.setBuffer(buffer.get());
+    renderer_.clear();
+    renderer_.setBuffer(buffer.get());
     if (tsig_context.get() != NULL) {
-        message->toWire(renderer_handle_.getRenderer(), *tsig_context);
+        message->toWire(renderer_, *tsig_context);
     } else {
-        message->toWire(renderer_handle_.getRenderer());
+        message->toWire(renderer_);
     }
-    renderer_handle_.setBuffer(NULL);
     return (true);
 }
 

+ 1 - 1
src/lib/dns/messagerenderer.cc

@@ -280,7 +280,7 @@ AbstractMessageRenderer::AbstractMessageRenderer() :
 }
 
 void
-AbstractMessageRenderer::setBuffer(OutputBuffer* buffer) {
+AbstractMessageRenderer::setBuffer(OutputBuffer* buffer) { 
     if (buffer != NULL && buffer_->getLength() != 0) {
         isc_throw(isc::InvalidParameter,
                   "MessageRenderer buffer cannot be set when in use");

+ 0 - 84
src/lib/dns/messagerendererhandle.h

@@ -1,84 +0,0 @@
-// Copyright (C) 2009  Internet Systems Consortium, Inc. ("ISC")
-//
-// Permission to use, copy, modify, and/or distribute this software for any
-// purpose with or without fee is hereby granted, provided that the above
-// copyright notice and this permission notice appear in all copies.
-//
-// THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
-// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-// AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
-// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
-// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-// PERFORMANCE OF THIS SOFTWARE.
-
-#ifndef __MESSAGERENDERERHANDLE_H
-#define __MESSAGERENDERERHANDLE_H 1
-
-#include <dns/messagerenderer.h>
-
-namespace isc {
-
-namespace dns {
-
-/// The \c MessageRendererHandle is a handle class for
-/// \c MessageRendere.
-///
-/// A \c MessageRendererHandle object is constructed with a \c MessageRenderer
-/// object.
-class MessageRendererHandle {
-    ///
-    /// \name Constructors, Assignment Operator and Destructor.
-    ///
-    /// Note: The copy constructor and the assignment operator are
-    /// intentionally defined as private.
-    //@{
-private:
-    MessageRendererHandle(const MessageRendererHandle& renderer);
-    MessageRendererHandle& operator=(const MessageRendererHandle& renderer);
-public:
-    /// The constructor.
-    ///
-    /// \param use_cache Whether to enable hot spot cache for lookup results.
-    /// \param xfrout_client Communication interface with a separate xfrout
-    /// process.  It's normally a reference to an xfr::XfroutClient object,
-    /// but can refer to a local mock object for te
-    explicit MessageRendererHandle():renderer_(NULL){
-        renderer_ = new MessageRenderer();
-    }
-    ~MessageRendererHandle() {
-        if(NULL != renderer_) {
-            delete renderer_;
-            renderer_ = NULL;
-        }
-    }
-    //@}
-public:
-    /// \brief Return the length of data written in the internal buffer.
-    size_t getLength() const {
-           return (renderer_->getLength());
-    }
-    /// \brief Set the buffer.
-    void setBuffer(isc::util::OutputBuffer* buffer) {
-        renderer_->setBuffer(buffer);
-    }
-    MessageRenderer& getRenderer() const {
-        return *renderer_;
-    }
-    /// \brief Set the maximum length of rendered data that can fit in the
-    /// corresponding DNS message without truncation.
-    ///
-    /// \param len The maximum length in bytes.
-    void setLengthLimit(size_t len) {
-        renderer_->setLengthLimit(len);
-    }
-private:
-    MessageRenderer * renderer_;
-};
-}
-}
-#endif // __MESSAGERENDERERHANDLE_H
-
-// Local Variables:
-// mode: c++
-// End: