X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=stream.h;h=a4aa642b1b81cbb5a336cd138e3fe8d94122c6f7;hp=efedc9b404a7f3c71e90fbb4fdb412e7ac58f5e5;hb=e666e2735bf831084d744027b844de9f4d3fe34d;hpb=c271559c8b2b9583346c8c6269701894cb9ff4c1 diff --git a/stream.h b/stream.h index efedc9b..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 -struct 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();