diff --git a/syndicate-examples/speed-tests/box-and-client/without-dataspace.rkt b/syndicate-examples/speed-tests/box-and-client/without-dataspace.rkt index 30e340c..0d01b7a 100644 --- a/syndicate-examples/speed-tests/box-and-client/without-dataspace.rkt +++ b/syndicate-examples/speed-tests/box-and-client/without-dataspace.rkt @@ -19,7 +19,7 @@ 'setter (embedded (object #:name 'update-handler - [#:asserted new-value + [#:message new-value (reporter new-value) (when (= new-value LIMIT) (stop-facet root-facet)) (value new-value)])))))) @@ -49,7 +49,7 @@ (define root-facet this-facet) (define disarm (facet-prevent-inert-check! this-facet)) (box (object #:name 'box-boot-handler - [#:asserted refs + [#:message refs (log-info "refs ~v" refs) (match-define (hash-table ('getter (embedded g)) ('setter (embedded s))) refs) diff --git a/syndicate/drivers/tcp.rkt b/syndicate/drivers/tcp.rkt index 40f9c55..c24a1d0 100644 --- a/syndicate/drivers/tcp.rkt +++ b/syndicate/drivers/tcp.rkt @@ -75,9 +75,9 @@ (at local-peer (assert (ActiveSocket-controller (object #:name (list name 'socket) - [#:asserted (Socket-credit amount mode) (issue-credit amount mode)] - [#:asserted (Socket-data data mode) (relay data mode)] - [#:asserted (Socket-eof) (close-output-port o)])))))))) + [#:message (Socket-credit amount mode) (issue-credit amount mode)] + [#:message (Socket-data data mode) (relay data mode)] + [#:message (Socket-eof) (close-output-port o)])))))))) (define (spawn-inbound ds custodian i o spec) (define name (call-with-values (lambda () (tcp-addresses i #t)) list)) @@ -104,14 +104,14 @@ [#:asserted (ActiveSocket-close message) (log-syndicate/drivers/tcp-debug "closing ~v:\n~a" this-actor message) (stop-current-facet)] - [#:asserted (ActiveSocket-Socket (Socket-credit amount mode)) + [#:message (ActiveSocket-Socket (Socket-credit amount mode)) (if issue-credit (issue-credit amount mode) (log-syndicate/drivers/tcp-warning "Socket-credit ~v/~v ignored because no controller present" amount mode))] - [#:asserted (ActiveSocket-Socket (Socket-data data mode)) + [#:message (ActiveSocket-Socket (Socket-data data mode)) (relay data mode)] - [#:asserted (ActiveSocket-Socket (Socket-eof)) + [#:message (ActiveSocket-Socket (Socket-eof)) (close-output-port o)])) (at ds (assert (ConnectionPeer handle (TcpRemote (caddr name) (cadddr name)))) @@ -246,9 +246,9 @@ #:retracted (on-disconnected)] [#:asserted (ActiveSocket-close message) (on-rejected message)] - [#:asserted (ActiveSocket-Socket (Socket-credit amount mode)) (on-credit amount mode)] - [#:asserted (ActiveSocket-Socket (Socket-data data mode)) (on-data data mode)] - [#:asserted (ActiveSocket-Socket (Socket-eof)) (on-eof)])) + [#:message (ActiveSocket-Socket (Socket-credit amount mode)) (on-credit amount mode)] + [#:message (ActiveSocket-Socket (Socket-data data mode)) (on-data data mode)] + [#:message (ActiveSocket-Socket (Socket-eof)) (on-eof)])) (at ds (assert (Connection s spec)))) (define (send-credit conn amount mode) diff --git a/syndicate/syntax.rkt b/syndicate/syntax.rkt index c45e8b8..8a40439 100644 --- a/syndicate/syntax.rkt +++ b/syndicate/syntax.rkt @@ -92,15 +92,15 @@ [(_ name-stx: handler ...) #`(let ((state (make-hash))) (define name name-stx.N) - (define (handler-function assertion) - (-object-clauses name assertion [] [handler ...])) + (define (handler-function assertion is-message?) + (-object-clauses name assertion is-message? [] [handler ...])) (ref (entity #:name name #:assert (lambda (m h) (-object-assert state handler-function m h)) #:retract (lambda (h) (-object-retract state h)) #:message (lambda (m) (-object-message handler-function m)))))])) (define (-object-assert state handler-function assertion handle) - (define k (handler-function assertion)) + (define k (handler-function assertion #f)) (when k (hash-set! state handle k))) (define (-object-retract state handle) @@ -110,44 +110,56 @@ (k))) (define (-object-message handler-function message) - (define k (handler-function message)) + (define k (handler-function message #t)) (when k (k))) (define-syntax (-object-clauses stx) (syntax-parse stx - [(_ name input [completed ...] []) + [(_ name input is-message? [completed ...] + []) #'(match input completed ... [_ - (log-syndicate/object-debug "Unhandled assertion ~v in ~v" input name) + (log-syndicate/object-debug "Unhandled ~a ~v in ~v" + (if is-message? "message" "assertion") + input name) #f])] - [(_ name input [completed ...] [ [#:spawn pat body ...] more ... ]) + [(_ name input is-message? [completed ...] + [ [#:message pat body+ ...] more ... ]) #'(-object-clauses name input - [completed ...] - [ [#:during pat (spawn/link body ...)] more ... ])] + is-message? + [ completed ... [(-object-pattern pat) #:when is-message? + body+ ... #f] ] + [more ...])] - [(_ name input [completed ...] [ [#:asserted pat body+ ... #:retracted body- ...] more ... ]) + [(_ name input is-message? [completed ...] + [ [#:asserted pat body+ ... #:retracted body- ...] more ... ]) #`(-object-clauses name input - [ completed ... [(-object-pattern pat) + is-message? + [ completed ... [(-object-pattern pat) #:when (not is-message?) body+ ... #,(if (null? (syntax->list #'(body- ...))) #`#f #`(lambda () body- ...))] ] [more ...])] - [(_ name input [completed ...] [ [#:asserted pat body+ ...] more ... ]) + [(_ name input is-message? [completed ...] + [ [#:asserted pat body+ ...] more ... ]) #'(-object-clauses name input + is-message? [completed ...] [ [#:asserted pat body+ ... #:retracted] more ... ])] - [(_ name input [completed ...] [ [pat body ...] more ... ]) + [(_ name input is-message? [completed ...] + [ [pat body ...] more ... ]) #'(-object-clauses name input + is-message? [completed ...] [ [#:asserted pat (define f (react (facet-prevent-inert-check! this-facet) body ...))