| |
| 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) |