design-doc: add more state store info

master
Devin R 2020-04-14 16:23:55 -04:00
parent a0973dec85
commit 9c73947e21
1 changed files with 3 additions and 1 deletions

View File

@ -3,7 +3,7 @@
## Design and Layout ## Design and Layout
#### Async Client #### Async Client
The highest level structure that ties the other pieces of functionality together. The client is responsible for the Request/Response cycle. It can be thought of as a thin layer atop the `BaseClient` passing requests along for the `BaseClient` to handle. A user should be able to write their own `AsyncClient` using the `BaseClient`. It knows how to The highest level structure that ties the other pieces of functionality together. The client is responsible for the Request/Response cycle. It can be thought of as a thin layer atop the `BaseClient` passing requests along for the `BaseClient` to handle. A user should be able to write their own `AsyncClient` using the `BaseClient`. It knows how to
- login - login
- send messages - send messages
- encryption ... - encryption ...
@ -92,6 +92,8 @@ The `BaseClient` also has access to a `dyn StateStore` this is an abstraction ar
- store/save - store/save
- update ?? - update ??
The state store will restore our client state in the `BaseClient` and client authors can just get the latest state that they want to present from the client object. No need to ask the state store for it, this may change if custom setups request this. `StateStore`'s base is load/store and internally to the crate update the `BaseClient`.
#### Event Emitter #### Event Emitter
The consumer of this crate can implement the `EventEmitter` trait for full control over how incoming events are handled by their client. If that isn't enough it is possible to receive every incoming response with the `AsyncClient::sync_forever` callback. The consumer of this crate can implement the `EventEmitter` trait for full control over how incoming events are handled by their client. If that isn't enough it is possible to receive every incoming response with the `AsyncClient::sync_forever` callback.
- list the methods for `EventEmitter`? - list the methods for `EventEmitter`?