#include <stddef.h>
#include <stdint.h>
#include <sys/types.h>
+#include <sys/uio.h>
#include <string>
#include <vector>
// Changes the backlog size, restructuring the data as needed.
void set_backlog_size(size_t new_size);
- std::string stream_id;
+ std::string url;
// The HTTP response header, without the trailing double newline.
std::string http_header;
MarkPool *mark_pool;
// Queued data, if any. Protected by the owning Server's <queued_data_mutex>.
- std::string queued_data;
+ // The data pointers in the iovec are owned by us.
+ std::vector<iovec> queued_data;
// Put client to sleep, since there is no more data for it; we will on
// longer listen on POLLOUT until we get more data. Also, it will be put
void put_client_to_sleep(Client *client);
// Add more data to <queued_data>, adding Metacube headers if needed.
+ // Does not take ownership of <data>.
// You should hold the owning Server's <queued_data_mutex>.
void add_data_deferred(const char *data, size_t bytes);
Stream(const Stream& other);
// Adds data directly to the stream file descriptor, without adding headers or
- // going through <queued_data>. You should hold the owning Server's
- // <mutex>.
- void add_data_raw(const char *data, ssize_t bytes);
+ // going through <queued_data>.
+ // You should hold the owning Server's <mutex>.
+ void add_data_raw(const std::vector<iovec> &data);
};
#endif // !defined(_STREAM_H)