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