Explorar o código

HttpServer: Use std::unique_ptr for lastBody_ and headerProcessor_

Tatsuhiro Tsujikawa %!s(int64=12) %!d(string=hai) anos
pai
achega
d2ec57057e
Modificáronse 3 ficheiros con 11 adicións e 9 borrados
  1. 6 1
      src/HttpServer.cc
  2. 3 6
      src/HttpServer.h
  3. 2 2
      src/HttpServerBodyCommand.cc

+ 6 - 1
src/HttpServer.cc

@@ -61,7 +61,7 @@ HttpServer::HttpServer(const std::shared_ptr<SocketCore>& socket)
  : socket_(socket),
    socketRecvBuffer_(new SocketRecvBuffer(socket_)),
    socketBuffer_(socket),
-   headerProcessor_(new HttpHeaderProcessor
+   headerProcessor_(make_unique<HttpHeaderProcessor>
                     (HttpHeaderProcessor::SERVER_PARSER)),
    lastContentLength_(0),
    bodyConsumed_(0),
@@ -382,6 +382,11 @@ std::string HttpServer::createQuery() const
   }
 }
 
+DiskWriter* HttpServer::getBody() const
+{
+  return lastBody_.get();
+}
+
 bool HttpServer::supportsPersistentConnection() const
 {
   return keepAlive_ &&

+ 3 - 6
src/HttpServer.h

@@ -67,14 +67,14 @@ private:
   std::shared_ptr<SocketCore> socket_;
   std::shared_ptr<SocketRecvBuffer> socketRecvBuffer_;
   SocketBuffer socketBuffer_;
-  std::shared_ptr<HttpHeaderProcessor> headerProcessor_;
+  std::unique_ptr<HttpHeaderProcessor> headerProcessor_;
   std::shared_ptr<HttpHeader> lastRequestHeader_;
   int64_t lastContentLength_;
   // How many bytes are consumed. The total number of bytes is
   // lastContentLength_.
   int64_t bodyConsumed_;
   RequestType reqType_;
-  std::shared_ptr<DiskWriter> lastBody_;
+  std::unique_ptr<DiskWriter> lastBody_;
   bool keepAlive_;
   bool gzip_;
   std::string username_;
@@ -101,10 +101,7 @@ public:
 
   std::string createQuery() const;
 
-  const std::shared_ptr<DiskWriter>& getBody() const
-  {
-    return lastBody_;
-  }
+  DiskWriter* getBody() const;
 
   RequestType getRequestType() const
   {

+ 2 - 2
src/HttpServerBodyCommand.cc

@@ -210,7 +210,7 @@ bool HttpServerBodyCommand::execute()
         switch(httpServer_->getRequestType()) {
         case RPC_TYPE_XML: {
 #ifdef ENABLE_XML_RPC
-          auto dw = std::static_pointer_cast<rpc::XmlRpcDiskWriter>
+          auto dw = static_cast<rpc::XmlRpcDiskWriter*>
             (httpServer_->getBody());
           int error;
           error = dw->finalize();
@@ -255,7 +255,7 @@ bool HttpServerBodyCommand::execute()
                param.request.size(),
                error);
           } else {
-            auto dw = std::static_pointer_cast<json::JsonDiskWriter>
+            auto dw = static_cast<json::JsonDiskWriter*>
               (httpServer_->getBody());
             error = dw->finalize();
             if(error == 0) {