X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=udpinput.h;h=11a369073ad0ce000fdb5ec680f6e7d4b4a159c9;hp=0f89d6828de79b9be3e27db77ed2d7efcf93fb70;hb=bfc1a54cf84bb1784c14bd4f5acbb500460e35b5;hpb=ca9624c43b968a0f29ea44e47851ff686bb64bb6 diff --git a/udpinput.h b/udpinput.h index 0f89d68..11a3690 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; + // 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)