| // 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_HTTP_SERVER_H__ |
| #define P2P_SERVER_HTTP_SERVER_H__ |
| |
| #include <stdint.h> |
| |
| #include <string> |
| |
| #include <base/callback.h> |
| #include <base/files/file_path.h> |
| #include <metrics/metrics_library.h> |
| |
| namespace p2p { |
| |
| namespace server { |
| |
| // Interface for starting/stopping a HTTP server and getting feedback |
| // about the number of connected HTTP clients. |
| class HttpServer { |
| public: |
| // Called when number of connections changes |
| typedef base::Callback<void(int num_connections)> NumConnectionsCallback; |
| |
| virtual ~HttpServer() {} |
| |
| // Statrs the HTTP server. |
| virtual bool Start() = 0; |
| |
| // Stops the HTTP server. |
| virtual bool Stop() = 0; |
| |
| // Returns true the HTTP has been started. |
| virtual bool IsRunning() = 0; |
| |
| // Returns the port number where the HTTP server is listening. A value of 0 |
| // means that the HTTP server is not yet listening on any port. |
| virtual uint16_t Port() = 0; |
| |
| // Sets the callback function used for reporting number of connections. |
| // In order to receive callbacks, you need to run the default |
| // GLib main-loop. |
| virtual void SetNumConnectionsCallback(NumConnectionsCallback callback) = 0; |
| |
| // Creates and initializes a suitable HttpServer instance for |
| // serving files from |root_dir| on the TCP port given by |port|. |
| // The passed |bin_dir| directory should contain the http-server executable |
| // to launch. |
| // Note that the server will not initially be running; use the Start() |
| // method to start it. |
| static HttpServer* Construct(MetricsLibraryInterface* metrics_lib, |
| const base::FilePath& root_dir, |
| const base::FilePath& bin_dir, |
| uint16_t port); |
| }; |
| |
| } // namespace server |
| |
| } // namespace p2p |
| |
| #endif // P2P_SERVER_HTTP_SERVER_H__ |