diff options
-rw-r--r-- | src/lib/asiolink/tcp_socket.h | 2 | ||||
-rw-r--r-- | src/lib/http/connection_pool.cc | 4 | ||||
-rw-r--r-- | src/lib/http/connection_pool.h | 4 | ||||
-rw-r--r-- | src/lib/http/response_creator_factory.h | 3 | ||||
-rw-r--r-- | src/lib/http/tests/connection_pool_unittests.cc | 17 |
5 files changed, 18 insertions, 12 deletions
diff --git a/src/lib/asiolink/tcp_socket.h b/src/lib/asiolink/tcp_socket.h index a97739ddef..adf74d1f0f 100644 --- a/src/lib/asiolink/tcp_socket.h +++ b/src/lib/asiolink/tcp_socket.h @@ -110,6 +110,7 @@ public: /// \param endpoint Target of the send. (Unused for a TCP socket because /// that was determined when the connection was opened.) /// \param callback Callback object. + /// \throw BufferTooLarge on attempt to send a buffer larger than 64kB. virtual void asyncSend(const void* data, size_t length, const IOEndpoint* endpoint, C& callback); @@ -124,6 +125,7 @@ public: /// \param data Data to send /// \param length Length of data to send /// \param callback Callback object. + /// \throw BufferTooLarge on attempt to send a buffer larger than 64kB. void asyncSend(const void* data, size_t length, C& callback); /// \brief Receive Asynchronously diff --git a/src/lib/http/connection_pool.cc b/src/lib/http/connection_pool.cc index 387a8f255a..e5a7b5d2af 100644 --- a/src/lib/http/connection_pool.cc +++ b/src/lib/http/connection_pool.cc @@ -12,13 +12,13 @@ namespace http { void HttpConnectionPool::start(const HttpConnectionPtr& connection) { - connections_.insert(connection); + connections_.insert(connections_.end(), connection); connection->asyncAccept(); } void HttpConnectionPool::stop(const HttpConnectionPtr& connection) { - connections_.erase(connection); + connections_.remove(connection); } void diff --git a/src/lib/http/connection_pool.h b/src/lib/http/connection_pool.h index 10f3f7990b..b5c19b0f56 100644 --- a/src/lib/http/connection_pool.h +++ b/src/lib/http/connection_pool.h @@ -8,7 +8,7 @@ #define HTTP_CONNECTION_POOL_H #include <http/connection.h> -#include <set> +#include <list> namespace isc { namespace http { @@ -49,7 +49,7 @@ public: protected: /// @brief Set of connections. - std::set<HttpConnectionPtr> connections_; + std::list<HttpConnectionPtr> connections_; }; diff --git a/src/lib/http/response_creator_factory.h b/src/lib/http/response_creator_factory.h index 3827ebda65..c2fc9178a5 100644 --- a/src/lib/http/response_creator_factory.h +++ b/src/lib/http/response_creator_factory.h @@ -36,9 +36,6 @@ class HttpResponseCreatorFactory { public: /// @brief Virtual destructor. - /// - /// The implementation doesn't need to declare virtual destructor because - /// it is already implemented here. virtual ~HttpResponseCreatorFactory() { } /// @brief Returns an instance of the @ref HttpResponseCreator. diff --git a/src/lib/http/tests/connection_pool_unittests.cc b/src/lib/http/tests/connection_pool_unittests.cc index f68a64cb62..3cf2797e20 100644 --- a/src/lib/http/tests/connection_pool_unittests.cc +++ b/src/lib/http/tests/connection_pool_unittests.cc @@ -16,6 +16,7 @@ #include <http/tests/response_test.h> #include <boost/shared_ptr.hpp> #include <gtest/gtest.h> +#include <algorithm> using namespace isc::asiolink; using namespace isc::http; @@ -81,6 +82,12 @@ public: using HttpConnectionPool::connections_; + /// @brief Checks if specified connection belongs to the pool. + bool hasConnection(const HttpConnectionPtr& conn) const { + return (std::find(connections_.begin(), connections_.end(), conn) + != connections_.end()); + } + }; /// @brief Test fixture class for @ref HttpConnectionPool. @@ -120,19 +127,19 @@ TEST_F(HttpConnectionPoolTest, startStop) { // Start first connection and check that it has been added to the pool. ASSERT_NO_THROW(pool.start(conn1)); ASSERT_EQ(1, pool.connections_.size()); - ASSERT_EQ(1, pool.connections_.count(conn1)); + ASSERT_EQ(1, pool.hasConnection(conn1)); // Start second connection and check that it also has been added. ASSERT_NO_THROW(pool.start(conn2)); ASSERT_EQ(2, pool.connections_.size()); - ASSERT_EQ(1, pool.connections_.count(conn2)); + ASSERT_EQ(1, pool.hasConnection(conn2)); // Stop first connection. ASSERT_NO_THROW(pool.stop(conn1)); ASSERT_EQ(1, pool.connections_.size()); // Check that it has been removed but the second connection is still there. - ASSERT_EQ(0, pool.connections_.count(conn1)); - ASSERT_EQ(1, pool.connections_.count(conn2)); + ASSERT_EQ(0, pool.hasConnection(conn1)); + ASSERT_EQ(1, pool.hasConnection(conn2)); // Remove second connection and verify. ASSERT_NO_THROW(pool.stop(conn2)); @@ -179,7 +186,7 @@ TEST_F(HttpConnectionPoolTest, stopInvalid) { ASSERT_NO_THROW(pool.start(conn1)); ASSERT_NO_THROW(pool.stop(conn2)); ASSERT_EQ(1, pool.connections_.size()); - ASSERT_EQ(1, pool.connections_.count(conn1)); + ASSERT_EQ(1, pool.hasConnection(conn1)); } } |