blob: fa20d78b748a2652c892256045e6f14f42647af0 [file] [log] [blame] [view]
Events are FIDL calls initiated from the server. Because these calls have no
built-in client-side response, they are not flow controlled: a server could
queue up a very large number of such calls, and flood the client. One solution
to this problem is the *throttled event pattern*. This pattern involves adding a
client-called FIDL method to serve as an acknowledgement point for one or more
events to sync to.
Servers should refrain from sending more of the throttled events (the exact
semantics here are specific to the implementing protocol) until they have
received the next acknowledgement call from the client. Similarly, clients
should close the connection the if servers send more throttled events than
allowed before the client has acknowledged them. These restrictions are not
built into the FIDL runtime, and require some manual implementation on the part
of client/server implementers to ensure correct behavior.
<<../examples/canvas/_callout.md>>
<<../examples/canvas/_client_requested_draw_tutorial.md>>