ActiveSocket-close now gets a string, not an embedded exn
This commit is contained in:
parent
3984a2c22a
commit
752bc91991
|
@ -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)
|
||||
|
|
|
@ -9,7 +9,7 @@ TcpInbound = <inbound @host string @port int>.
|
|||
|
||||
ActiveSocket =
|
||||
/ <controller @controller #!Sink>
|
||||
/ <close @reason any>
|
||||
/ <close @message string>
|
||||
/ Socket
|
||||
.
|
||||
|
||||
|
|
Loading…
Reference in New Issue