$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: lists.drrngrvy_at_[hidden]
Date: 2007-10-17 16:42:43
Author: drrngrvy
Date: 2007-10-17 16:42:43 EDT (Wed, 17 Oct 2007)
New Revision: 40135
URL: http://svn.boost.org/trac/boost/changeset/40135
Log:
[merging from SF]
* Fixing fcgi/client.hpp and scgi/client.hpp.
* Test (plus adding blank scgi_init.hpp file)
Added:
   sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/detail/scgi_init.hpp   (contents, props changed)
Text files modified: 
   sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/header.hpp                     |     9 +++++++++                               
   sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/scgi/acceptor_service_impl.hpp |    18 ++++++++++--------                      
   sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/scgi/client.hpp                |    18 +++++++++++++-----                      
   3 files changed, 32 insertions(+), 13 deletions(-)
Added: sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/detail/scgi_init.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/detail/scgi_init.hpp	2007-10-17 16:42:43 EDT (Wed, 17 Oct 2007)
@@ -0,0 +1,31 @@
+//              -- detail/scgi_init.hpp --
+//
+//           Copyright (c) Darren Garvey 2007.
+// Distributed under the Boost Software License, Version 1.0.
+//    (See accompanying file LICENSE_1_0.txt or copy at
+//          http://www.boost.org/LICENSE_1_0.txt)
+//
+////////////////////////////////////////////////////////////////
+#ifndef CGI_DETAIL_SCGI_INIT_HPP_INCLUDED__
+#define CGI_DETAIL_SCGI_INIT_HPP_INCLUDED__
+
+#include <map>
+#include <string>
+
+namespace cgi {
+ namespace detail {
+
+  /// Setup the process environment for SCGI use
+  /**
+   * Not implemented yet. Basically this will catch OS signals
+   * and make sure a minor problem doesn't crash the whole server.
+   */
+  template<typename T>
+  class scgi_init
+  {
+  };
+
+ } // namespace detail
+} // namespace cgi
+
+#endif // CGI_DETAIL_SCGI_INIT_HPP_INCLUDED__
Modified: sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/header.hpp
==============================================================================
--- sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/header.hpp	(original)
+++ sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/header.hpp	2007-10-17 16:42:43 EDT (Wed, 17 Oct 2007)
@@ -20,6 +20,9 @@
     {
     }
 
+    /// Templated constructor to allow user-defined types to be converted
+    template<typename T> header(T& t);
+
     header(const std::string& name, const std::string& val)
       : content(name + ": " + val + "\r\n")
     {
@@ -39,6 +42,12 @@
     return header("Location", url);
   }
 
+  inline template<>
+  header::header(cookie& ck)
+    : content(ck.to_string())
+  {
+  }
+
 } // namespace cgi
 
 #endif // CGI_HEADER_HPP_INCLUDED__
Modified: sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/scgi/acceptor_service_impl.hpp
==============================================================================
--- sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/scgi/acceptor_service_impl.hpp	(original)
+++ sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/scgi/acceptor_service_impl.hpp	2007-10-17 16:42:43 EDT (Wed, 17 Oct 2007)
@@ -50,20 +50,22 @@
     typedef basic_protocol_service<protocol_type>       protocol_service_type;
     typedef boost::asio::ip::tcp                        native_protocol_type;
     typedef acceptor_service_type::native_type          native_type;
-    typedef boost::asio::socket_acceptor_service<
-              native_protocol_type>                     acceptor_service_type;
+    typedef implementation_type::acceptor_service_type  acceptor_service_type;
 
     /// The unique service identifier
     //static boost::asio::io_service::id id;
 
     struct implementation_type
     {
-      typedef Protocol                             protocol_type;
-      typedef scgi::request                        request_type;
-      acceptor_service_type::implementation_type   acceptor_;
-      boost::mutex                                 mutex_;
-      std::queue<boost::shared_ptr<request_type> > waiting_requests_;
-      protocol_service_type*                       service_;
+      typedef Protocol                              protocol_type;
+      typedef scgi::request                         request_type;
+      typedef boost::asio::socket_acceptor_service<
+                native_protocol_type>               acceptor_service_type;
+
+      acceptor_service_type::implementation_type    acceptor_;
+      boost::mutex                                  mutex_;
+      std::queue<boost::shared_ptr<request_type> >  waiting_requests_;
+      protocol_service_type*                        service_;
     };
 
     explicit scgi_request_acceptor_service(cgi::io_service& ios)
Modified: sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/scgi/client.hpp
==============================================================================
--- sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/scgi/client.hpp	(original)
+++ sandbox/SOC/2007/cgi/branches/merge_from_SF_17_oct/boost/cgi/scgi/client.hpp	2007-10-17 16:42:43 EDT (Wed, 17 Oct 2007)
@@ -1,4 +1,4 @@
-//                 -- fcgi/client.hpp --
+//                 -- scgi/client.hpp --
 //
 //            Copyright (c) Darren Garvey 2007.
 // Distributed under the Boost Software License, Version 1.0.
@@ -6,8 +6,8 @@
 //          http://www.boost.org/LICENSE_1_0.txt)
 //
 ////////////////////////////////////////////////////////////////
-#ifndef CGI_FCGI_SPECIFICATION_HPP_INCLUDED__
-#define CGI_FCGI_SPECIFICATION_HPP_INCLUDED__
+#ifndef CGI_SCGI_CLIENT_HPP_INCLUDED__
+#define CGI_SCGI_CLIENT_HPP_INCLUDED__
 
 #include "boost/cgi/map.hpp"
 #include "boost/cgi/io_service.hpp"
@@ -27,12 +27,20 @@
     struct connection_type : Connection
     { typedef boost::shared_ptr<connection_type> pointer; }
 
+    /// Construct
     basic_client(io_service_type& ios)
       : io_service_(ios)
       , connection_(new connection_type::pointer(ios))
     {
     }
 
+    /// Destroy
+    /** Closing the connection as early as possible is good for efficiency */
+    ~basic_client()
+    {
+      connection_->close();
+    }
+
     io_service_type& io_service() { return io_service_; }
 
     /// Associate a connection with this client
@@ -93,7 +101,7 @@
     connection_ptr   connection_;
   };
 
- } // namespace fcgi
+ } // namespace scgi
 }// namespace cgi
 
-#endif // CGI_FCGI_SPECIFICATION_HPP_INCLUDED__
+#endif // CGI_SCGI_CLIENT_HPP_INCLUDED__