Commit Graph

518 Commits

Author SHA1 Message Date
Tony Garnock-Jones cfd7312293 More minor fixes 2016-05-13 20:50:20 -04:00
Tony Garnock-Jones deae6c6d29 Fix spacing 2016-05-13 20:26:06 -04:00
Tony Garnock-Jones 372652c49d Syndicate.UI.uiAttribute 2016-05-13 20:17:16 -04:00
Tony Garnock-Jones f64491c0a7 Better use of console.warn and console.error in dataspace.js 2016-05-13 20:17:16 -04:00
Tony Garnock-Jones 628ba87c54 Rewrite JS DemandMatcher to handle important latency-related corner cases. 2016-05-13 20:14:01 -04:00
Tony Garnock-Jones 68cde5be6c DemandMatcher: overlap not ruled out! Remove it. 2016-05-12 22:18:57 -04:00
Tony Garnock-Jones b51e7f99d9 LocationHashTracker 2016-05-12 20:11:22 -04:00
Tony Garnock-Jones 6d305e6b00 Hoist .refresh out from .handleEvent; makes assertions depend on state that might have been changed in event handlers properly. 2016-05-12 17:37:14 -04:00
Tony Garnock-Jones a433a054b8 Syndicate.UI.windowEvent 2016-05-12 15:56:42 -04:00
Tony Garnock-Jones e0bd8d08c2 Re-register UIFragment event handlers on node replacement 2016-05-12 15:19:37 -04:00
Tony Garnock-Jones 4eb29832df Correct stupid mistake 2016-05-12 14:52:55 -04:00
Tony Garnock-Jones fb89954158 Only try to attach events to things that might emit them 2016-05-12 14:46:39 -04:00
Tony Garnock-Jones c6cfa2fe87 Scoped broker connections 2016-05-12 12:32:29 -04:00
Tony Garnock-Jones f486f93bd4 More ergonomic step/prepend for tries and patches 2016-05-12 12:18:59 -04:00
Tony Garnock-Jones 81e10632dd Expose Websocket request host/path to server-side 2016-05-12 12:18:43 -04:00
Tony Garnock-Jones 7e48e82a48 Print out peer connection details in broker 2016-05-12 10:57:34 -04:00
Tony Garnock-Jones de44b51e49 ws-echo.rkt and ws-echo-client.rkt 2016-05-12 10:48:34 -04:00
Tony Garnock-Jones a8821913a1 Publish websocket-peer-details for each connection 2016-05-12 10:46:02 -04:00
Tony Garnock-Jones 4de4a099b9 Fix bug with outbound websocket connections 2016-05-12 10:46:02 -04:00
Tony Garnock-Jones 8d6bc484a8 Canonicalize deserialized atoms. Fixes serious routing bug when using the broker. 2016-05-12 08:06:23 -04:00
Tony Garnock-Jones 7b26b4bf14 Switch to FunctionBody from plain Block, to allow function definitions. 2016-05-12 00:01:09 -04:00
Tony Garnock-Jones 879e2425b9 Make Anchor.prototype.context n-ary 2016-05-11 22:13:35 -04:00
Tony Garnock-Jones e67d018079 Make the TV catch fire eventually. 2016-05-11 21:22:26 -04:00
Tony Garnock-Jones 7b9f5a54e8 Use "message type" in demo-*.js 2016-05-11 21:05:40 -04:00
Tony Garnock-Jones 0208ae7a7d A better UI library. Replaces DOM and jQuery support. 2016-05-11 21:03:11 -04:00
Tony Garnock-Jones 23f269fba6 Use Syndicate.Timer in SVG example 2016-05-11 11:13:14 -04:00
Tony Garnock-Jones 6ba9b402ec Only trigger onStateChange with non-empty patch (?) 2016-05-11 10:59:44 -04:00
Tony Garnock-Jones 0693e88031 Allow "message type ..." as well as "assertion type ...". 2016-05-11 10:59:27 -04:00
Tony Garnock-Jones 4a2c8147aa Enable and disable the IoT demo spawn/kill buttons.
Previous commit changed DOM fragment representation to use strings
instead of Seal'd quasi-sexprs, and so eliminated any distinction
between textually-identical DOM fragments in the dataspace.

This patch disables the "spawn" buttons for components in the IoT demo
to avoid (mostly harmless) duplication of actor instances.

It also demonstrates use of react{} outside a *lexically*-enclosing
actor{}.
2016-05-10 22:40:49 -04:00
Tony Garnock-Jones dede7f08a7 Use strings-of-HTML and mustache.js for DOM fragments.
This avoids churn in the dataspace for no-op DOM updates, but at the
cost of losing the identity of multiple pieces of asserted DOM when
they end up being textually identical.

The fix is, generally, to make sure your DOM fragments are different
in some (perhaps invisible when rendered) way. Next commit updates the
IoT demo to avoid duplicate fragments.
2016-05-10 22:38:40 -04:00
Tony Garnock-Jones efc444ac37 forever => react, state => react, init => do, done => finally, until => react until 2016-05-10 18:49:12 -04:00
Tony Garnock-Jones e54b6566f5 Use Timer driver in IoT example. 2016-05-10 17:04:39 -04:00
Tony Garnock-Jones 43e94b83b4 Timer driver 2016-05-10 17:04:16 -04:00
Tony Garnock-Jones b8e076188c Protect init and done blocks with withCurrentFacet. 2016-05-10 17:02:31 -04:00
Tony Garnock-Jones 00b0ef63eb SVG example. 2016-05-10 15:33:02 -04:00
Tony Garnock-Jones 1adb8110b6 Support xmlns in dom-driver. 2016-05-10 15:31:47 -04:00
Tony Garnock-Jones fd2e4cc23c Exchange ad-hoc tracing for slightly more principled log-info output. 2016-05-10 01:24:47 -04:00
Tony Garnock-Jones b24cd754b0 Set default chat broker url 2016-05-10 01:14:32 -04:00
Tony Garnock-Jones 8f1d27c584 Move Codec and Broker into src/. 2016-05-10 00:57:05 -04:00
Tony Garnock-Jones 8546e93e5d Implement Syndicate/js broker-client and chat app.
Support capturing with a pattern in the Syndicate/js DSL: ($foo = bar())

Struct has been cleaned up, and now offers proper Javascript objects
for its prefab-like structures. These can serialize and deserialize
themselves to/from JSON. They behave like prefabs in that two
StructureTypes created with the same label and arity behave
identically wrt Dataspaces and Tries. Sadly, prefab field names had to
go in order to support this.

Facets now track and terminate their children upon termination. This
is experimental; I suspect it is required for nested durings.

DemandMatcher can now support multiple specs, but this is less useful
than you might think since it tracks supply and demand quite naively.
It would have to have (surprise, surprise!) a mux-like structure to do
the job properly!

Added WakeDetector to main.js; adding the broker client will have to
wait until it is turned into a proper module in the src/ directory.
2016-05-10 00:40:53 -04:00
Tony Garnock-Jones bbca582b98 Get the broker working.
Add support for encoding prefab structs as JSON objects.

Remove linkage & at-meta from patches inside broker dataspace. This is
ugly, and deserves to be revisited in future.

Fix a bug where using trie-prune-branch was incorrect, and
trie-subtract should have been used instead.

Factor out support/struct.rkt.
2016-05-10 00:25:50 -04:00
Tony Garnock-Jones abc844c964 Dataspace.setOnStateChange, to correctly call it at least once 2016-05-09 13:18:19 -04:00
Tony Garnock-Jones 7c4e00f614 Command-line launcher for broker 2016-05-09 12:55:20 -04:00
Tony Garnock-Jones 18eab695cc First sketch of broker 2016-05-08 20:42:46 -04:00
Tony Garnock-Jones 5d46a6e631 Add patch-without-at-meta 2016-05-08 20:42:33 -04:00
Tony Garnock-Jones fbece48f52 `patch!` and crude `on-event` handling in actor.rkt 2016-05-08 20:41:29 -04:00
Tony Garnock-Jones 925ba8c8de mux-focus-event (commented out, because problems) 2016-05-08 19:47:07 -04:00
Tony Garnock-Jones 1dfaf537f5 Add Struct _get method. 2016-05-08 18:57:35 -04:00
Tony Garnock-Jones 6fe897eb46 Rename track -> query 2016-05-08 17:51:08 -04:00
Tony Garnock-Jones 5c5da4e569 Avoid using assert/retract directly in IoT alerting 2016-05-08 12:25:28 -04:00