// and the order between them are undefined.
// XXX: header should ideally be ordered with respect to data.
void add_client_deferred(int sock);
// and the order between them are undefined.
// XXX: header should ideally be ordered with respect to data.
void add_client_deferred(int sock);
- void add_data_deferred(int stream_index, const char *data, size_t bytes);
+ void add_data_deferred(int stream_index, const char *data, size_t bytes, StreamStartSuitability suitable_for_stream_start);
// These should not be called while running, since that would violate
// threading assumptions (ie., that epoll is only called from one thread
// These should not be called while running, since that would violate
// threading assumptions (ie., that epoll is only called from one thread
// Note that if you want to hold both this and <mutex> below,
// you will need to take <mutex> before this one.
// Note that if you want to hold both this and <mutex> below,
// you will need to take <mutex> before this one.
// Deferred commands that should be run from the do_work() thread as soon as possible.
// We defer these for two reasons:
// Deferred commands that should be run from the do_work() thread as soon as possible.
// We defer these for two reasons:
// add_data(), since they want to do add_data() rather often, and <mutex>
// can be taken a lot of the time.
//
// add_data(), since they want to do add_data() rather often, and <mutex>
// can be taken a lot of the time.
//