summaryrefslogtreecommitdiffstats
path: root/net/tools
diff options
context:
space:
mode:
Diffstat (limited to 'net/tools')
-rw-r--r--net/tools/quic/quic_client.h4
-rw-r--r--net/tools/quic/quic_dispatcher.cc18
-rw-r--r--net/tools/quic/quic_dispatcher.h6
-rw-r--r--net/tools/quic/quic_dispatcher_test.cc69
-rw-r--r--net/tools/quic/test_tools/quic_client_peer.cc7
-rw-r--r--net/tools/quic/test_tools/quic_client_peer.h1
-rw-r--r--net/tools/quic/test_tools/quic_test_utils.h2
7 files changed, 47 insertions, 60 deletions
diff --git a/net/tools/quic/quic_client.h b/net/tools/quic/quic_client.h
index ca20a8d2..5e89601 100644
--- a/net/tools/quic/quic_client.h
+++ b/net/tools/quic/quic_client.h
@@ -102,8 +102,6 @@ class QuicClient : public EpollCallbackInterface {
bool connected() const;
- int packets_dropped() { return packets_dropped_; }
-
void set_bind_to_address(IPAddressNumber address) {
bind_to_address_ = address;
}
@@ -112,8 +110,6 @@ class QuicClient : public EpollCallbackInterface {
void set_local_port(int local_port) { local_port_ = local_port; }
- int local_port() { return local_port_; }
-
const IPEndPoint& server_address() const { return server_address_; }
const IPEndPoint& client_address() const { return client_address_; }
diff --git a/net/tools/quic/quic_dispatcher.cc b/net/tools/quic/quic_dispatcher.cc
index 68691f7..5253764 100644
--- a/net/tools/quic/quic_dispatcher.cc
+++ b/net/tools/quic/quic_dispatcher.cc
@@ -59,7 +59,7 @@ int QuicDispatcher::WritePacket(const char* buffer, size_t buf_len,
QuicBlockedWriterInterface* writer,
int* error) {
if (write_blocked_) {
- write_blocked_list_.AddBlockedObject(writer);
+ write_blocked_list_.insert(make_pair(writer, true));
*error = EAGAIN;
return -1;
}
@@ -68,7 +68,7 @@ int QuicDispatcher::WritePacket(const char* buffer, size_t buf_len,
self_address, peer_address,
error);
if (rc == -1 && (*error == EWOULDBLOCK || *error == EAGAIN)) {
- write_blocked_list_.AddBlockedObject(writer);
+ write_blocked_list_.insert(make_pair(writer, true));
write_blocked_ = true;
}
return rc;
@@ -114,7 +114,7 @@ void QuicDispatcher::ProcessPacket(const IPEndPoint& server_address,
void QuicDispatcher::CleanUpSession(SessionMap::iterator it) {
QuicSession* session = it->second;
- write_blocked_list_.RemoveBlockedObject(session->connection());
+ write_blocked_list_.erase(session->connection());
time_wait_list_manager_->AddGuidToTimeWait(it->first,
session->connection()->version());
session_map_.erase(it);
@@ -129,13 +129,13 @@ bool QuicDispatcher::OnCanWrite() {
write_blocked_ = false;
// Give each writer one attempt to write.
- int num_writers = write_blocked_list_.NumObjects();
+ int num_writers = write_blocked_list_.size();
for (int i = 0; i < num_writers; ++i) {
- if (write_blocked_list_.IsEmpty()) {
+ if (write_blocked_list_.empty()) {
break;
}
- QuicBlockedWriterInterface* writer =
- write_blocked_list_.GetNextBlockedObject();
+ QuicBlockedWriterInterface* writer = write_blocked_list_.begin()->first;
+ write_blocked_list_.erase(write_blocked_list_.begin());
bool can_write_more = writer->OnCanWrite();
if (write_blocked_) {
// We were unable to write. Wait for the next EPOLLOUT.
@@ -146,12 +146,12 @@ bool QuicDispatcher::OnCanWrite() {
// The socket is not blocked but the writer has ceded work. Add it to the
// end of the list.
if (can_write_more) {
- write_blocked_list_.AddBlockedObject(writer);
+ write_blocked_list_.insert(make_pair(writer, true));
}
}
// We're not write blocked. Return true if there's more work to do.
- return !write_blocked_list_.IsEmpty();
+ return !write_blocked_list_.empty();
}
void QuicDispatcher::Shutdown() {
diff --git a/net/tools/quic/quic_dispatcher.h b/net/tools/quic/quic_dispatcher.h
index bbf8d9b..aea76cb 100644
--- a/net/tools/quic/quic_dispatcher.h
+++ b/net/tools/quic/quic_dispatcher.h
@@ -12,7 +12,7 @@
#include "base/containers/hash_tables.h"
#include "net/base/ip_endpoint.h"
-#include "net/quic/blocked_list.h"
+#include "net/base/linked_hash_map.h"
#include "net/quic/quic_blocked_writer_interface.h"
#include "net/quic/quic_protocol.h"
#include "net/tools/flip_server/epoll_server.h"
@@ -48,7 +48,8 @@ class QuicDispatcherPeer;
class DeleteSessionsAlarm;
class QuicDispatcher : public QuicPacketWriter, public QuicSessionOwner {
public:
- typedef BlockedList<QuicBlockedWriterInterface*> WriteBlockedList;
+ // Ideally we'd have a linked_hash_set: the boolean is unused.
+ typedef linked_hash_map<QuicBlockedWriterInterface*, bool> WriteBlockedList;
// Due to the way delete_sessions_closure_ is registered, the Dispatcher
// must live until epoll_server Shutdown.
@@ -82,7 +83,6 @@ class QuicDispatcher : public QuicPacketWriter, public QuicSessionOwner {
// Ensure that the closed connection is cleaned up asynchronously.
virtual void OnConnectionClose(QuicGuid guid, QuicErrorCode error) OVERRIDE;
- int fd() { return fd_; }
void set_fd(int fd) { fd_ = fd; }
typedef base::hash_map<QuicGuid, QuicSession*> SessionMap;
diff --git a/net/tools/quic/quic_dispatcher_test.cc b/net/tools/quic/quic_dispatcher_test.cc
index 059d833..2e2c309 100644
--- a/net/tools/quic/quic_dispatcher_test.cc
+++ b/net/tools/quic/quic_dispatcher_test.cc
@@ -22,6 +22,7 @@ using base::StringPiece;
using net::EpollServer;
using net::test::MockSession;
using net::tools::test::MockConnection;
+using std::make_pair;
using testing::_;
using testing::DoAll;
using testing::Invoke;
@@ -237,7 +238,7 @@ TEST_F(QuicDispatcherTest, TimeWaitListManager) {
ProcessPacket(addr, guid, "foo");
}
-class WriteBlockedListTest : public QuicDispatcherTest {
+class QuicWriteBlockedListTest : public QuicDispatcherTest {
public:
virtual void SetUp() {
IPEndPoint addr(Loopback4(), 1);
@@ -270,12 +271,12 @@ class WriteBlockedListTest : public QuicDispatcherTest {
QuicDispatcher::WriteBlockedList* blocked_list_;
};
-TEST_F(WriteBlockedListTest, BasicOnCanWrite) {
+TEST_F(QuicWriteBlockedListTest, BasicOnCanWrite) {
// No OnCanWrite calls because no connections are blocked.
dispatcher_.OnCanWrite();
// Register connection 1 for events, and make sure it's nofitied.
- blocked_list_->AddBlockedObject(connection1());
+ blocked_list_->insert(make_pair(connection1(), true));
EXPECT_CALL(*connection1(), OnCanWrite());
dispatcher_.OnCanWrite();
@@ -284,67 +285,67 @@ TEST_F(WriteBlockedListTest, BasicOnCanWrite) {
EXPECT_FALSE(dispatcher_.OnCanWrite());
}
-TEST_F(WriteBlockedListTest, OnCanWriteOrder) {
+TEST_F(QuicWriteBlockedListTest, OnCanWriteOrder) {
// Make sure we handle events in order.
InSequence s;
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->AddBlockedObject(connection2());
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->insert(make_pair(connection2(), true));
EXPECT_CALL(*connection1(), OnCanWrite());
EXPECT_CALL(*connection2(), OnCanWrite());
dispatcher_.OnCanWrite();
// Check the other ordering.
- blocked_list_->AddBlockedObject(connection2());
- blocked_list_->AddBlockedObject(connection1());
+ blocked_list_->insert(make_pair(connection2(), true));
+ blocked_list_->insert(make_pair(connection1(), true));
EXPECT_CALL(*connection2(), OnCanWrite());
EXPECT_CALL(*connection1(), OnCanWrite());
dispatcher_.OnCanWrite();
}
-TEST_F(WriteBlockedListTest, OnCanWriteRemove) {
+TEST_F(QuicWriteBlockedListTest, OnCanWriteRemove) {
// Add and remove one connction.
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->RemoveBlockedObject(connection1());
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->erase(connection1());
EXPECT_CALL(*connection1(), OnCanWrite()).Times(0);
dispatcher_.OnCanWrite();
// Add and remove one connction and make sure it doesn't affect others.
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->AddBlockedObject(connection2());
- blocked_list_->RemoveBlockedObject(connection1());
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->insert(make_pair(connection2(), true));
+ blocked_list_->erase(connection1());
EXPECT_CALL(*connection2(), OnCanWrite());
dispatcher_.OnCanWrite();
// Add it, remove it, and add it back and make sure things are OK.
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->RemoveBlockedObject(connection1());
- blocked_list_->AddBlockedObject(connection1());
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->erase(connection1());
+ blocked_list_->insert(make_pair(connection1(), true));
EXPECT_CALL(*connection1(), OnCanWrite()).Times(1);
dispatcher_.OnCanWrite();
}
-TEST_F(WriteBlockedListTest, DoubleAdd) {
+TEST_F(QuicWriteBlockedListTest, DoubleAdd) {
// Make sure a double add does not necessitate a double remove.
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->RemoveBlockedObject(connection1());
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->erase(connection1());
EXPECT_CALL(*connection1(), OnCanWrite()).Times(0);
dispatcher_.OnCanWrite();
// Make sure a double add does not result in two OnCanWrite calls.
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->AddBlockedObject(connection1());
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->insert(make_pair(connection1(), true));
EXPECT_CALL(*connection1(), OnCanWrite()).Times(1);
dispatcher_.OnCanWrite();
}
-TEST_F(WriteBlockedListTest, OnCanWriteHandleBlock) {
+TEST_F(QuicWriteBlockedListTest, OnCanWriteHandleBlock) {
// Finally make sure if we write block on a write call, we stop calling.
InSequence s;
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->AddBlockedObject(connection2());
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->insert(make_pair(connection2(), true));
EXPECT_CALL(*connection1(), OnCanWrite()).WillOnce(
- Invoke(this, &WriteBlockedListTest::SetBlocked));
+ Invoke(this, &QuicWriteBlockedListTest::SetBlocked));
EXPECT_CALL(*connection2(), OnCanWrite()).Times(0);
dispatcher_.OnCanWrite();
@@ -353,12 +354,12 @@ TEST_F(WriteBlockedListTest, OnCanWriteHandleBlock) {
dispatcher_.OnCanWrite();
}
-TEST_F(WriteBlockedListTest, LimitedWrites) {
+TEST_F(QuicWriteBlockedListTest, LimitedWrites) {
// Make sure we call both writers. The first will register for more writing
// but should not be immediately called due to limits.
InSequence s;
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->AddBlockedObject(connection2());
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->insert(make_pair(connection2(), true));
EXPECT_CALL(*connection1(), OnCanWrite()).WillOnce(Return(true));
EXPECT_CALL(*connection2(), OnCanWrite()).WillOnce(Return(false));
dispatcher_.OnCanWrite();
@@ -368,13 +369,13 @@ TEST_F(WriteBlockedListTest, LimitedWrites) {
dispatcher_.OnCanWrite();
}
-TEST_F(WriteBlockedListTest, TestWriteLimits) {
+TEST_F(QuicWriteBlockedListTest, TestWriteLimits) {
// Finally make sure if we write block on a write call, we stop calling.
InSequence s;
- blocked_list_->AddBlockedObject(connection1());
- blocked_list_->AddBlockedObject(connection2());
+ blocked_list_->insert(make_pair(connection1(), true));
+ blocked_list_->insert(make_pair(connection2(), true));
EXPECT_CALL(*connection1(), OnCanWrite()).WillOnce(
- Invoke(this, &WriteBlockedListTest::SetBlocked));
+ Invoke(this, &QuicWriteBlockedListTest::SetBlocked));
EXPECT_CALL(*connection2(), OnCanWrite()).Times(0);
dispatcher_.OnCanWrite();
diff --git a/net/tools/quic/test_tools/quic_client_peer.cc b/net/tools/quic/test_tools/quic_client_peer.cc
index 8583594..25fdb7e 100644
--- a/net/tools/quic/test_tools/quic_client_peer.cc
+++ b/net/tools/quic/test_tools/quic_client_peer.cc
@@ -11,13 +11,6 @@ namespace tools {
namespace test {
// static
-void QuicClientPeer::Reinitialize(QuicClient* client) {
- client->initialized_ = false;
- client->epoll_server_.UnregisterFD(client->fd_);
- client->Initialize();
-}
-
-// static
int QuicClientPeer::GetFd(QuicClient* client) {
return client->fd_;
}
diff --git a/net/tools/quic/test_tools/quic_client_peer.h b/net/tools/quic/test_tools/quic_client_peer.h
index 8eaa17e..016120a 100644
--- a/net/tools/quic/test_tools/quic_client_peer.h
+++ b/net/tools/quic/test_tools/quic_client_peer.h
@@ -14,7 +14,6 @@ namespace test {
class QuicClientPeer {
public:
- static void Reinitialize(QuicClient* client);
static int GetFd(QuicClient* client);
};
diff --git a/net/tools/quic/test_tools/quic_test_utils.h b/net/tools/quic/test_tools/quic_test_utils.h
index 31ea1815..d18556b 100644
--- a/net/tools/quic/test_tools/quic_test_utils.h
+++ b/net/tools/quic/test_tools/quic_test_utils.h
@@ -22,8 +22,6 @@ class IPEndPoint;
namespace tools {
namespace test {
-std::string SerializeUncompressedHeaders(const SpdyHeaderBlock& headers);
-
class MockConnection : public QuicConnection {
public:
// Uses a QuicConnectionHelper created with fd and eps.