X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=udpinput.h;h=b3f504aa20255943302a77e5673489fd89ba4831;hp=0f89d6828de79b9be3e27db77ed2d7efcf93fb70;hb=6544fa0ec3f3a501bcb89ea977756911bd7f3ebd;hpb=ca9624c43b968a0f29ea44e47851ff686bb64bb6 diff --git a/udpinput.h b/udpinput.h index 0f89d68..b3f504a 100644 --- a/udpinput.h +++ b/udpinput.h @@ -1,8 +1,9 @@ #ifndef _UDPINPUT_H #define _UDPINPUT_H 1 -#include +#include #include +#include #include "input.h" @@ -10,7 +11,7 @@ class InputProto; class UDPInput : public Input { public: - UDPInput(const std::string &stream_id, const std::string &url); + UDPInput(const std::string &url); // Serialization/deserialization. UDPInput(const InputProto &serialized); @@ -19,6 +20,10 @@ public: virtual std::string get_url() const { return url; } virtual void close_socket(); + virtual void add_destination(int stream_index); + + virtual InputStats get_stats() const; + private: // Actually gets the packets. virtual void do_work(); @@ -26,14 +31,26 @@ private: // Create the HTTP header. void construct_header(); - std::string stream_id; + std::vector stream_indices; // The URL and its parsed components. std::string url; - std::string host, port, path; + std::string user, host, port, path; + + // The HTTP header we're sending to clients. + std::string http_header; // The socket we are receiving on (or -1). int sock; + + // Temporary buffer, sized for the maximum size of an UDP packet. + char packet_buf[65536]; + + // Mutex protecting . + mutable pthread_mutex_t stats_mutex; + + // The current statistics for this connection. Protected by . + InputStats stats; }; #endif // !defined(_UDPINPUT_H)