13 // Extremely rudimentary URL parsing.
14 bool parse_url(const std::string &url, std::string *protocol, std::string *host, std::string *port, std::string *path);
16 // Figure out the right type of input based on the URL, and create a new Input of the right type.
17 // Will return NULL if unknown.
18 Input *create_input(const std::string &url);
19 Input *create_input(const InputProto &serialized);
21 // Digested statistics for writing to logs etc.
25 // The number of bytes we have received so far, including any Metacube headers.
27 // Not reset across connections.
28 size_t bytes_received;
30 // The number of data bytes we have received so far (or more precisely,
31 // number of data bytes we have sent on to the stream). This excludes Metacube
32 // headers and corrupted data we've skipped.
34 // Not reset across connections.
35 size_t data_bytes_received;
37 // When the current connection was initiated. -1 if we are not currently connected.
40 // TODO: Number of loss events might both be useful,
41 // similar to for clients. Also, per-connection byte counters.
44 class Input : public Thread {
47 virtual InputProto serialize() const = 0;
48 virtual std::string get_url() const = 0;
49 virtual void close_socket() = 0;
50 virtual void add_destination(int stream_index) = 0;
52 // Note: May be called from a different thread, so must be thread-safe.
53 virtual InputStats get_stats() const = 0;
56 #endif // !defined(_INPUT_H)