MINOR: channel: add the date of last read in the channel

We store the time stamp of last read in the channel in order to
be able to measure some bit rate and pause lengths. We only use
16 bits which were unused for this. We don't need more, as it
allows us to measure with a millisecond precision for up to 65s.
This commit is contained in:
Willy Tarreau 2014-02-09 17:45:16 +01:00
parent 8f39dcdc8d
commit b145c78623
2 changed files with 2 additions and 0 deletions

View File

@ -55,6 +55,7 @@ static inline void channel_init(struct channel *chn)
chn->buf->i = 0; chn->buf->i = 0;
chn->buf->p = chn->buf->data; chn->buf->p = chn->buf->data;
chn->to_forward = 0; chn->to_forward = 0;
chn->last_read = now_ms;
chn->xfer_small = chn->xfer_large = 0; chn->xfer_small = chn->xfer_large = 0;
chn->total = 0; chn->total = 0;
chn->pipe = NULL; chn->pipe = NULL;

View File

@ -172,6 +172,7 @@ struct channel {
struct stream_interface *prod; /* producer attached to this channel */ struct stream_interface *prod; /* producer attached to this channel */
struct pipe *pipe; /* non-NULL only when data present */ struct pipe *pipe; /* non-NULL only when data present */
unsigned int to_forward; /* number of bytes to forward after out without a wake-up */ unsigned int to_forward; /* number of bytes to forward after out without a wake-up */
unsigned short last_read; /* 16 lower bits of last read date (max pause=65s) */
unsigned char xfer_large; /* number of consecutive large xfers */ unsigned char xfer_large; /* number of consecutive large xfers */
unsigned char xfer_small; /* number of consecutive small xfers */ unsigned char xfer_small; /* number of consecutive small xfers */
unsigned long long total; /* total data read */ unsigned long long total; /* total data read */