// Representation of a single, muxed (we only really care about bytes/blocks) stream.
// Fed by Input, sent out by Server (to Client).
+#include <stddef.h>
#include <stdint.h>
+#include <sys/types.h>
#include <string>
#include <vector>
-struct Client;
class MarkPool;
class StreamProto;
+struct Client;
struct Stream {
Stream(const std::string &stream_id, size_t backlog_size);
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).
// 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();