blob: 37d8f4fe19bff937d848b835566328c89f49cba0 [file] [log] [blame]
// Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef P2P_SERVER_FAKE_HTTP_SERVER_H_
#define P2P_SERVER_FAKE_HTTP_SERVER_H_
#include <string>
#include <base/callback.h>
#include <base/files/file_path.h>
#include <base/macros.h>
#include "p2p/server/http_server.h"
namespace p2p {
namespace server {
// A HTTP server that doesn't really serve any files and can be made
// to lie about its number of connected clients.
class FakeHttpServer : public HttpServer {
public:
FakeHttpServer() : is_running_(false), num_connections_(0) {}
FakeHttpServer(const FakeHttpServer&) = delete;
FakeHttpServer& operator=(const FakeHttpServer&) = delete;
bool Start() override {
is_running_ = true;
return true;
}
bool Stop() override {
is_running_ = false;
return true;
}
bool IsRunning() override { return is_running_; }
uint16_t Port() override { return 1234; }
void SetNumConnectionsCallback(NumConnectionsCallback callback) override {
callback_ = callback;
}
void SetNumConnections(int num_connections) {
if (num_connections_ != num_connections) {
num_connections_ = num_connections;
if (!callback_.is_null())
callback_.Run(num_connections);
}
}
private:
bool is_running_;
NumConnectionsCallback callback_;
int num_connections_;
};
} // namespace server
} // namespace p2p
#endif // P2P_SERVER_FAKE_HTTP_SERVER_H_