blob: cb36d760e732e147091bf212b83ae660795a370f [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/test/embedded_test_server/simple_connection_listener.h"
#include "base/location.h"
#include "base/sequenced_task_runner.h"
#include "base/threading/thread_task_runner_handle.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace net {
namespace test_server {
SimpleConnectionListener::SimpleConnectionListener(
int expected_connections,
AllowAdditionalConnections allow_additional_connections)
: expected_connections_(expected_connections),
allow_additional_connections_(allow_additional_connections),
run_loop_task_runner_(base::ThreadTaskRunnerHandle::Get()) {}
SimpleConnectionListener::~SimpleConnectionListener() = default;
void SimpleConnectionListener::AcceptedSocket(const StreamSocket& socket) {
++seen_connections_;
if (allow_additional_connections_ != ALLOW_ADDITIONAL_CONNECTIONS)
EXPECT_LE(seen_connections_, expected_connections_);
if (seen_connections_ == expected_connections_)
run_loop_task_runner_->PostTask(FROM_HERE, run_loop_.QuitClosure());
}
void SimpleConnectionListener::ReadFromSocket(const StreamSocket& socket,
int rv) {}
void SimpleConnectionListener::WaitForConnections() {
EXPECT_TRUE(run_loop_task_runner_->RunsTasksInCurrentSequence());
run_loop_.Run();
}
} // namespace test_server
} // namespace net