|  | 
 | An unlisted package for sharing code for service events and stream management between Dart SDK internal services. | 
 |  | 
 | The Dart Developer Service and Dart Tooling Daemon are the main consumers of this package. | 
 |  | 
 | **Expected SLO**: this package is maintained for our own tooling; we may not be able to respond to all issues and may only address the ones that we ourselves encounter. | 
 |  | 
 | ## Details | 
 |  | 
 | This package helps handle some of the plumbing required to setup client communication for a service. The main behavior that it helps with is: | 
 | - `StreamManager` | 
 |   - allows a client to subscribe/cancel to a stream with `streamListen`/`streamCancel`. | 
 |   - allows a client to post a message to a stream with `postEvent`. | 
 | - `Client`, an interface that ensures the client is equipped to: | 
 |   - handle method requests with `sendRequest`. | 
 |   - handle receiving a message sent to a stream with `streamNotify`. | 
 | - `ClientManager`, keeps track of clients connected to a service. | 
 |   - `addClient` should be called when a client connects to your service. | 
 |   - `removeClient` should be called when it disconnects. | 
 |  | 
 | ## Usage | 
 |  | 
 |   To see an example of how `dart_service_protocol_shared` is used see: | 
 |   * [Dart Developer Service](https://github.com/dart-lang/sdk/tree/main/pkg/dds) |