X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=stream.h;h=7e20aef2f02c6147e952c3804c55f705d39f0363;hp=a4aa642b1b81cbb5a336cd138e3fe8d94122c6f7;hb=479933dbc99e984f1ecf9987441fa3ee8a7bd382;hpb=9bb20b7dd0bcea9de1daf4cac29263d74924ce5a diff --git a/stream.h b/stream.h index a4aa642..7e20aef 100644 --- a/stream.h +++ b/stream.h @@ -15,11 +15,14 @@ class StreamProto; struct Client; struct Stream { - Stream(const std::string &stream_id, size_t backlog_size); + // Must be in sync with StreamConfig::Encoding. + enum Encoding { STREAM_ENCODING_RAW = 0, STREAM_ENCODING_METACUBE }; + + Stream(const std::string &stream_id, size_t backlog_size, Encoding encoding); ~Stream(); // Serialization/deserialization. - Stream(const StreamProto &serialized); + Stream(const StreamProto &serialized, int data_fd); StreamProto serialize(); // Changes the backlog size, restructuring the data as needed. @@ -27,8 +30,15 @@ struct Stream { std::string stream_id; - // The HTTP response header, plus the video stream header (if any). - std::string header; + // The HTTP response header, without the trailing double newline. + std::string http_header; + + // The video stream header (if any). + std::string stream_header; + + // What encoding we apply to the outgoing data (usually raw, but can also + // be Metacube, for reflecting to another Cubemap instance). + Encoding encoding; // The stream data itself, stored in a circular buffer. // @@ -73,6 +83,8 @@ struct Stream { private: Stream(const Stream& other); + + void add_data_raw(const char *data, ssize_t bytes); }; #endif // !defined(_STREAM_H)