Commit Graph

51 Commits

Author SHA1 Message Date
Tony Garnock-Jones 28901e9d31 Simpler stream connection protocol. 2021-06-18 13:48:12 +02:00
Tony Garnock-Jones 68db114840 Factor generic stream stuff out of tcp.rkt into stream.rkt 2021-06-17 15:26:14 +02:00
Tony Garnock-Jones 0ab3526cba Services and service activation 2021-06-17 14:57:06 +02:00
Tony Garnock-Jones ac8ea67ab1 `when` -> `on`; StreamConnection API; better `this-target`; tcp-listen errors
- spec-generic StreamConnection translators, for simple TCP API
 - `when` -> `on`, better use for event-expanders
 - Removal of special processing of `at`, making `this-target` properly lexically scopeable
 - TcpListenError and handling of tcp-listen errors
 - SYNDICATE_COLUMNS for pretty-printing of dataspace traces
 - Repair driver-support.rkt thread shutdown turn-taking
 - Refinements to stream protocols and implementation
 - Improvements to syntax location preservation in syntax.rkt
2021-06-17 13:38:30 +02:00
Tony Garnock-Jones d30c6feeee Split out experimental "stream" protocols; make tcp.rkt use them; more inertness checks
Also, a few other important changes:
 - Better printing of entity-ref structs
 - Inertness checks on assertion retraction (!) and preventer-disarm
 - Correct selection of active facet during dataflow recomputations
 - Repair silly omission in turn-assert/dataflow!
2021-06-16 21:44:07 +02:00
Tony Garnock-Jones 3fe5d3a343 Check for EOF even when there are no credits 2021-06-15 14:03:26 +02:00
Tony Garnock-Jones 2b18bb5b36 Fix ordering of credit issue 2021-06-15 13:58:26 +02:00
Tony Garnock-Jones 9451f9886f Whole-packet flow credit 2021-06-15 12:46:09 +02:00
Tony Garnock-Jones b64b111a45 Split out assert-control 2021-06-15 12:44:13 +02:00
Tony Garnock-Jones 0b1e9874d1 Treat #:message separately from #:asserted.
While in principle messages are "instantaneous" assertions, it invites
confusion to treat them as such in context of `(object)` because
assertions by default spawn nested facets, so it's too easy to
accidentally wrap a message handler in an unwanted facet. Being
explicit about messages means you never get an unwanted facet wrapper.
2021-06-15 12:41:46 +02:00
Tony Garnock-Jones 6c9926cb11 Add ConnectionPeer assertions; rename TcpOutbound -> TcpRemote and TcpInbound -> TcpLocal 2021-06-15 12:37:14 +02:00
Tony Garnock-Jones 4a0e6e0519 actor-group; bug fixes 2021-06-13 07:55:50 +02:00
Tony Garnock-Jones 6546e335ef Refactor/repair tcp.prs and tcp.rkt 2021-06-11 15:29:12 +02:00
Tony Garnock-Jones d304d1e87d Credit-based flow control on tcp driver; line mode 2021-06-11 14:18:53 +02:00
Tony Garnock-Jones b409063ff2 Handle EPIPE in tcp driver 2021-06-10 16:46:20 +02:00
Tony Garnock-Jones 247fd1b2c0 Introduce `object` and `spawn/link` 2021-06-10 16:21:30 +02:00
Tony Garnock-Jones 2f4525b031 Split out tcp-client.rkt and tcp-echo-server.rkt 2021-06-10 13:35:26 +02:00
Tony Garnock-Jones 11eb0bcd6f drivers/racket-event.rkt 2021-06-10 13:34:18 +02:00
Tony Garnock-Jones 752bc91991 ActiveSocket-close now gets a string, not an embedded exn 2021-06-10 13:33:16 +02:00
Tony Garnock-Jones 7790923e65 Split out timer-demo.rkt 2021-06-10 13:30:30 +02:00
Tony Garnock-Jones bd65204760 entity/stop-on-retract 2021-06-10 13:29:19 +02:00
Tony Garnock-Jones 37ca805969 Ambient current-turn 2021-06-10 11:42:07 +02:00
Tony Garnock-Jones 45e8c29976 TCP client driver, and provides 2021-06-10 10:42:59 +02:00
Tony Garnock-Jones 336811c51e Beginnings of a TCP driver 2021-06-10 10:00:43 +02:00
Tony Garnock-Jones 82648dc0da Port timer driver from older syndicate/rkt implementation 2021-06-09 23:08:06 +02:00
Tony Garnock-Jones 08c4980025 Move the bulk of the existing implementation out of the way 2021-05-27 10:34:35 +02:00
Tony Garnock-Jones f269c02c23 Rearrange for independent packages. 2020-04-27 20:27:48 +02:00
Tony Garnock-Jones 921265d2f3 Repair ws-recv usage; requires rfc6455 package v2.0 or newer 2019-05-22 23:45:15 +01:00
Tony Garnock-Jones cd2d7e428b Close input/output ports in web.rkt once connection is logically over 2019-05-16 14:58:33 +01:00
Tony Garnock-Jones c9b62c9a6d Drain ws-ch in an additional, previously-overlooked case 2019-05-16 12:39:16 +01:00
Tony Garnock-Jones ae97fb1d1e Flow-controlled TCP (except in netstack); flow-controlled server/federation messages; fixes federation startup glitching 2019-05-12 13:07:38 +01:00
Tony Garnock-Jones 386a66747e Tweak logging levels 2019-05-09 11:39:49 +01:00
Tony Garnock-Jones 4fd2c9895c Remove old, dead code 2019-04-25 12:58:48 +01:00
Tony Garnock-Jones 419bd093d1 Support transformations (e.g. rotation) in the scene prelude 2019-04-25 12:58:30 +01:00
Tony Garnock-Jones 4e33429b19 tcp-rejected; reassert-on 2019-03-18 23:27:59 +00:00
Tony Garnock-Jones 8b516b0190 Filesystem driver: add background-activity signal 2019-01-30 16:39:13 +00:00
Tony Garnock-Jones 60412bd6f2 config driver 2019-01-28 13:47:29 +00:00
Tony Garnock-Jones e72e22f250 tcp-connection-peer 2019-01-28 01:14:58 +00:00
Tony Garnock-Jones 6c1e3b033d Support binary/text websocket payloads 2018-11-15 06:49:31 +00:00
Tony Garnock-Jones f6ab8320c5 sqlite driver 2018-08-29 15:03:12 +01:00
Tony Garnock-Jones c125564f5f Improve example 2018-08-15 10:11:07 +01:00
Tony Garnock-Jones 061765041b Initial quasi-port of Syndicate/rkt web driver 2018-08-14 17:58:36 +01:00
Tony Garnock-Jones e9457af8c2 Clear no-longer-interesting timers 2018-08-14 12:33:50 +01:00
Tony Garnock-Jones 979d057f3f TODO 2018-08-13 21:45:44 +01:00
Tony Garnock-Jones 86412b273d UDP and UDP multicast 2018-08-13 20:07:27 +01:00
Tony Garnock-Jones ea16d24be8 filesystem driver 2018-05-11 09:58:25 +01:00
Tony Garnock-Jones 35726f3831 Notes on tcp2 protocol 2018-05-06 11:24:28 +01:00
Tony Garnock-Jones 9fc621c829 Add missing assertion for outbound connections. 2018-05-06 11:03:39 +01:00
Tony Garnock-Jones 2b2d12075a gl-2d driver and examples 2018-05-01 17:39:17 +01:00
Tony Garnock-Jones a6811f2ba5 Add timer/timestate support; this prompted a change to endpoint registration.
The `add-endpoint!` call is changed in two ways:

 - the old `assertion-fn` has become `update-fn`, yielding both
   an assertion *and* an optional handler, because if the handler
   depends on a field which changes, previously the handler wasn't
   being updated

 - a new parameter, `dynamic?`, can be set to #f (it's usually #t)
   to ensure that the assertion and skeleton-interest are calculated
   only once ever, and are not connected to the dataflow machinery.

The first change makes it possible for the `(later-than (deadline))`
pattern, where `deadline` is a field, to work; the second change makes
`during` and `during/spawn` work correctly in the face of field
updates.
2018-04-29 22:27:55 +01:00