ActiveSocket-close now gets a string, not an embedded exn

This commit is contained in:
Tony Garnock-Jones 2021-06-10 13:33:16 +02:00
parent 3984a2c22a
commit 752bc91991
2 changed files with 10 additions and 9 deletions

View File

@ -11,6 +11,7 @@
read-bytes-avail)
(require racket/tcp)
(require (only-in racket/exn exn->string))
(require syndicate/driver-support)
(require syndicate/schemas/gen/tcp)
(require syndicate/schemas/gen/dataspace-patterns)
@ -52,7 +53,7 @@
(define connection-custodian (make-custodian))
((with-handlers ([exn:fail:network?
(lambda (e)
(lambda () (at local-peer (assert (ActiveSocket-close e)))))])
(lambda () (at local-peer (assert (ActiveSocket-close (exn->string e))))))])
(define-values (i o) (parameterize ((current-custodian connection-custodian))
(tcp-connect host port)))
(lambda ()
@ -81,18 +82,18 @@
(lambda (m handle)
(match (parse-ActiveSocket m)
[(ActiveSocket-controller controller)
(log-syndicate/drivers/tcp-info "~v controller for ~v" controller this-actor)
(log-syndicate/drivers/tcp-debug "~v controller for ~v" controller this-actor)
(when (not active-controller)
(start-inbound-relay custodian name controller i))
(set! active-controller controller)
(set! active-controller-handle handle)]
[(ActiveSocket-close reason)
(log-syndicate/drivers/tcp-info "closing ~v reason ~v" this-actor reason)
[(ActiveSocket-close message)
(log-syndicate/drivers/tcp-debug "closing ~v:\n~a" this-actor message)
(stop-current-facet)]))
#:retract
(lambda (handle)
(log-syndicate/drivers/tcp-info "peer withdrawn ~v" this-actor)
(when (equal? handle active-controller-handle)
(log-syndicate/drivers/tcp-debug "peer withdrawn ~v" this-actor)
(stop-current-facet)))
#:message
(outbound-relay name o)))
@ -106,7 +107,7 @@
(let loop ()
(define bs (read-bytes-avail i))
(when (bytes? bs)
(log-syndicate/drivers/tcp-info "inbound data ~v for ~v" bs name)
(log-syndicate/drivers/tcp-debug "inbound data ~v for ~v" bs name)
(turn! facet (lambda () (send-data target bs)))
(loop))))))
@ -115,7 +116,7 @@
(lambda (m)
(match (parse-ActiveSocket m)
[(ActiveSocket-Socket (Socket payload))
(log-syndicate/drivers/tcp-info "outbound data ~v for ~v" payload name)
(log-syndicate/drivers/tcp-debug "outbound data ~v for ~v" payload name)
(write-bytes payload o)
(when (not flush-pending)
(set! flush-pending #t)
@ -149,7 +150,7 @@
#:assert (lambda (m _handle)
(match (parse-ActiveSocket m)
[(ActiveSocket-controller peer) (on-connected peer)]
[(ActiveSocket-close e) (on-rejected e)]))
[(ActiveSocket-close message) (on-rejected message)]))
#:retract (lambda (_handle) (on-disconnected))
#:message (lambda (m)
(match (parse-ActiveSocket m)

View File

@ -9,7 +9,7 @@ TcpInbound = <inbound @host string @port int>.
ActiveSocket =
/ <controller @controller #!Sink>
/ <close @reason any>
/ <close @message string>
/ Socket
.