Currently, the Butler's concept of datagrams is consecutive bursts of length-prefixed data. The Butler performs no throttling or filtering of this data, leaving it to client applications. Since incremental-datagram (e.g. Milo proto) only need to send macro updates on interval constraints, they all have to implement this monitor logic.
Rather than force every client to behave well, let's add this to the Butler's datagram processing logic.
- Add an option to the Butler stream registration protocol called "sparse datagram interval", which indicates that the datagram stream can be sparse and what interval updates should be sent.
- Butler will buffer a datagram stream and only send new data if:
- It differs from the previously-sent datagram, and
- at least "sparse datagram interval" time has passed since the previous datagram.
This will make Butler client code easier. This also needs to be integrated into the Go and Python Butler client libraries and utilized by Annotee and the Recipe Engine (minimally).
Comment 1 by estaab@chromium.org
, Mar 7 2017