hakuban 0.7.3 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  Convenient data-object sharing library.
4
4
 
5
- Are you tired of handling all the little details of propagating object states?
6
- Computing differences, serialization, network propagation (timeouts, keep-alives, ...), somehow catching-up on reconnection,
7
- load balancing object production, event delivery, object lifetime control etc. **Hakuban does all of that for you.**
5
+ Are you tired of handling all the little details of propagating object states?
6
+ Computing differences, serialization, network propagation (timeouts, keep-alives, ...), somehow catching-up on reconnection,
7
+ load balancing object production, event delivery, object lifetime control etc. **Hakuban does all of that for you.**
8
8
 
9
9
  For details on structs, modules, cargo feature flags, event handling, etc. head on to [documentation](https://docs.rs/hakuban/).
10
10
 
@@ -24,14 +24,15 @@ Some of Hakuban's features and properties:
24
24
  - Allows use of custom de/serializers, uses serde by default.
25
25
  - Can be compiled to .so, has ruby binding (ffi), and wasm/js binding.
26
26
 
27
- It's **not** meant for and won't do: message passing, remote function calls, synchronous "calls" (request-response), allow explicit target addressing, be a work-queue, allow "consuming" objects, work directly with any database, modify objects in transit.
27
+ It's **not** meant for and **won't** do: message passing, remote function calls, synchronous "calls" (request-response), allow explicit target addressing, be a work-queue, allow "consuming" objects, work directly with any database, modify objects in transit.
28
28
 
29
29
 
30
30
  ## Usage example
31
31
  ```rust
32
- let exchange = LocalExchange::builder().build();
33
- let mut observe_contract = exchange.object((["some-tag"],"xxx")).observe();
34
- let mut expose_contract = exchange.object((["some-tag"],"xxx")).expose();
32
+ let exchange = Exchange::new();
33
+
34
+ let mut observe_contract = exchange.object_observe_contract((["some-tag"],"xxx")).build();
35
+ let mut expose_contract = exchange.object_expose_contract((["some-tag"],"xxx")).build();
35
36
 
36
37
  tokio::spawn(async move {
37
38
  //ExposeContract emits ObjectStateSink when first observer appears
@@ -41,7 +42,7 @@ tokio::spawn(async move {
41
42
  });
42
43
 
43
44
  tokio::spawn(async move {
44
- //ObserveContract emits ObjectStateStream when exposer uploads first ObjectState
45
+ //ObserveContract emits ObjectStateStream
45
46
  let mut object_state_stream = observe_contract.next().await.unwrap();
46
47
  let object_state = object_state_stream.next().await.unwrap().json_deserialize::<String>();
47
48
  println!("{:?}", object_state.data);
@@ -60,14 +61,14 @@ Hakuban ruby ffi binding.
60
61
 
61
62
  Hakuban compiled to wasm, with JS interface to use in browser.
62
63
 
63
- ### Hakuban webapp router
64
+ ### Hakuban webapp state manager
64
65
  `(TODO: add url)`
65
66
 
66
- Webapp router, with following properties:
67
- * Every link is open-in-new-tab compatible, and copy-link compatible
67
+ Webapp state manager, with:
68
+ * Every link being open-in-new-tab compatible, and copy-link compatible
68
69
  * Short urls, optionally exposing selected state variables
69
70
  * All urls (== application states) are shareable
70
- * State can be bigger than what fits in a url (as long as it's built progressively)
71
+ * State can be bigger than what fits in a url (as long as it's built progresively)
71
72
  * Works while offline/disconnected (no url shortening then)
72
73
 
73
74
  ### Schedy
@@ -75,20 +76,19 @@ Webapp router, with following properties:
75
76
 
76
77
  Task queue/scheduler. Aware of resource preparation time. Resources owned and resources required by task are graph-structured.
77
78
 
78
- ### [MechaTouch](https://mikoton.com/pages/mechatouch.html)
79
+ ### MechaTouch
80
+ `(TODO: add url)`
79
81
 
80
- Commercial (aka. shameless plug) robotic ui-testing platform, with visual test-scenario programming, fully remote SUT control, zero-overhead performance measurements, etc.
82
+ Commercial (aka. shameless plug) robotic ui-testing platform.
81
83
 
82
84
  ## Roadmap
83
85
  Not ordered by priority:
86
+ - actor-ish api. allowing registration of object-producing lambdas, to be instantiated on demand in separate tasks.
87
+ - object signing, and access tokens
84
88
  - preloading/side loading
85
- - avoid object flicker on short disconnections
86
- - message filter for auth* and auditing
87
89
  - immunity to broken/malicious diffs
88
- - expose introspection/statistics objects
89
- - more efficient and simpler network protocol
90
- - hold un-serialized objects, and serialize only when/if needed
91
-
90
+ - expose more introspection/statistics objects
91
+ - lazy serialize/deserialize
92
92
  ## License
93
93
 
94
94
  Distributed under the MIT License. See `LICENSE` for more information.
@@ -105,13 +105,12 @@ If you're looking for more intimate contact, talk to `yunta` - on matrix [@yunta
105
105
 
106
106
  The list does not contain change- or message- focused projects, nor projects with integrated database. Hopefully. It's surprisingly difficult to figure out what some of those actually do:
107
107
  * [Redis](https://redis.io)
108
- * [driftdb](https://driftdb.com/)
108
+ * [Ably](https://ably.com/)
109
109
  * [Fluvio](https://www.fluvio.io/)
110
110
  * [deepstream](https://deepstream.io/)
111
- * [zenoh](https://zenoh.io/)
112
- * [Ably](https://ably.com/)
111
+ * [nhost](https://nhost.io/)
112
+ * [zenoh](https://zenoh.io/)
113
113
  * just diffing, if you don't need the network and lifetime control parts:
114
114
  * [serde-diff](https://github.com/amethyst/serde-diff)
115
115
  * [dipa](https://github.com/chinedufn/dipa)
116
116
  * [deltoid](https://github.com/jjpe/deltoid)
117
-