X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=stream.h;h=a4aa642b1b81cbb5a336cd138e3fe8d94122c6f7;hp=256946c25b41c36a748bb083e30cf10c08b4f3e5;hb=e666e2735bf831084d744027b844de9f4d3fe34d;hpb=195dc469133d0daed6ac69cdef373dc8dade9637 diff --git a/stream.h b/stream.h index 256946c..a4aa642 100644 --- a/stream.h +++ b/stream.h @@ -4,13 +4,15 @@ // Representation of a single, muxed (we only really care about bytes/blocks) stream. // Fed by Input, sent out by Server (to Client). +#include #include +#include #include #include -class Client; class MarkPool; class StreamProto; +struct Client; struct Stream { Stream(const std::string &stream_id, size_t backlog_size); @@ -20,6 +22,9 @@ struct Stream { Stream(const StreamProto &serialized); StreamProto serialize(); + // Changes the backlog size, restructuring the data as needed. + void set_backlog_size(size_t new_size); + std::string stream_id; // The HTTP response header, plus the video stream header (if any). @@ -59,6 +64,10 @@ struct Stream { // in the list of clients to wake up when we do. void put_client_to_sleep(Client *client); + // Add more input data to the stream. You should probably call wake_up_all_clients() + // after that. + void add_data(const char *data, ssize_t bytes); + // We have more data, so mark all clients that are sleeping as ready to go. void wake_up_all_clients();