diff options
Diffstat (limited to 'net/tools')
-rw-r--r-- | net/tools/quic/quic_client.h | 4 | ||||
-rw-r--r-- | net/tools/quic/quic_dispatcher.cc | 18 | ||||
-rw-r--r-- | net/tools/quic/quic_dispatcher.h | 6 | ||||
-rw-r--r-- | net/tools/quic/quic_dispatcher_test.cc | 69 | ||||
-rw-r--r-- | net/tools/quic/test_tools/quic_client_peer.cc | 7 | ||||
-rw-r--r-- | net/tools/quic/test_tools/quic_client_peer.h | 1 | ||||
-rw-r--r-- | net/tools/quic/test_tools/quic_test_utils.h | 2 |
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. |