summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/lib/asiolink/tcp_socket.h2
-rw-r--r--src/lib/http/connection_pool.cc4
-rw-r--r--src/lib/http/connection_pool.h4
-rw-r--r--src/lib/http/response_creator_factory.h3
-rw-r--r--src/lib/http/tests/connection_pool_unittests.cc17
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));
}
}