76e1b662bbc643db48ecd094dbc2386934bd82e2
[cubemap] / input.h
1 #ifndef _INPUT_H
2 #define _INPUT_H 1
3
4 #include <string>
5
6 #include "thread.h"
7
8 class Input;
9 class InputProto;
10
11 // Extremely rudimentary URL parsing.
12 bool parse_url(const std::string &url, std::string *protocol, std::string *host, std::string *port, std::string *path);
13
14 // Figure out the right type of input based on the URL, and create a new Input of the right type.
15 // Will return NULL if unknown.
16 Input *create_input(const std::string &url);
17 Input *create_input(const InputProto &serialized);
18
19 class Input : public Thread {
20 public:
21         virtual ~Input();
22         virtual InputProto serialize() const = 0;
23         virtual std::string get_url() const = 0;
24         virtual void close_socket() = 0;
25         virtual void add_destination(int stream_index) = 0;
26 };
27
28 #endif  // !defined(_INPUT_H)