Hey, I would just squash this with the next commit. On Tue, Jan 16, 2018 at 02:18:13PM +0000, Frediano Ziglio wrote: > The writing to network was always immediate. > Every write in the stream cause a write to the OS. 'causes' > This can have some penalty if you don't write large data as network > packets can be more fragmented or you encrypt data in smaller chunks > (when data are encrypted some padding is added then data is split in > multiple of encryption block which is usually the size of encryption > key and this is done for every write). > Define an interface to allow higher levels code to tell low level when > data should be sent to remote or when can wait more data. > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > server/red-stream.c | 9 +++++++++ > server/red-stream.h | 20 ++++++++++++++++++++ > 2 files changed, 29 insertions(+) > > diff --git a/server/red-stream.c b/server/red-stream.c > index 8f2c9d32..4812d8e4 100644 > --- a/server/red-stream.c > +++ b/server/red-stream.c > @@ -203,6 +203,15 @@ bool red_stream_write_all(RedStream *stream, const void *in_buf, size_t n) > return true; > } > > +bool red_stream_set_auto_flush(RedStream *s, bool enable) > +{ > + return enable; > +} > + > +void red_stream_flush(RedStream *s) > +{ > +} > + > #if HAVE_SASL > static ssize_t red_stream_sasl_write(RedStream *s, const void *buf, size_t nbyte); > #endif > diff --git a/server/red-stream.h b/server/red-stream.h > index 4d5075ed..7338c75b 100644 > --- a/server/red-stream.h > +++ b/server/red-stream.h > @@ -69,6 +69,26 @@ bool red_stream_set_no_delay(RedStream *stream, bool no_delay); > int red_stream_get_no_delay(RedStream *stream); > int red_stream_send_msgfd(RedStream *stream, int fd); > > +/** > + * Set auto flush flags. 'flag' > + * If set stream will send data to the underlying socket as 'If set, the stream will ...' > + * soon as data are written. This is the default. > + * If not set you should call red_stream_flush to force 'If not set, you should ...' > + * data to be sent. Failing to call red_stream_flush on a > + * manual flush stream could lead to latency. > + * Disabling auto flush can fail while enabling cannot. > + * > + * Returns true if success or false on failure. 'on success' maybe Acked-by: Christophe Fergeau <cfergeau@xxxxxxxxxx> > + */ > +bool red_stream_set_auto_flush(RedStream *stream, bool enable); > + > +/** > + * Flush data to the underlying socket. > + * Calling this function on a stream with auto flush set has > + * no result. > + */ > +void red_stream_flush(RedStream *stream); > + > typedef enum { > RED_SASL_ERROR_OK, > RED_SASL_ERROR_GENERIC, > -- > 2.14.3 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel