Add `get-user-custodian' to the sandbox.
This commit is contained in:
parent
82437faa18
commit
afa8e6c86b
|
@ -32,6 +32,7 @@
|
||||||
evaluator-alive?
|
evaluator-alive?
|
||||||
kill-evaluator
|
kill-evaluator
|
||||||
break-evaluator
|
break-evaluator
|
||||||
|
get-user-custodian
|
||||||
set-eval-limits
|
set-eval-limits
|
||||||
set-eval-handler
|
set-eval-handler
|
||||||
put-input
|
put-input
|
||||||
|
@ -621,6 +622,7 @@
|
||||||
(define-evaluator-messenger evaluator-alive? 'alive?)
|
(define-evaluator-messenger evaluator-alive? 'alive?)
|
||||||
(define-evaluator-messenger kill-evaluator 'kill)
|
(define-evaluator-messenger kill-evaluator 'kill)
|
||||||
(define-evaluator-messenger break-evaluator 'break)
|
(define-evaluator-messenger break-evaluator 'break)
|
||||||
|
(define-evaluator-messenger get-user-custodian 'user-cust)
|
||||||
(define-evaluator-messenger (set-eval-limits secs mb) 'limits)
|
(define-evaluator-messenger (set-eval-limits secs mb) 'limits)
|
||||||
(define-evaluator-messenger (set-eval-handler handler) 'handler)
|
(define-evaluator-messenger (set-eval-handler handler) 'handler)
|
||||||
(define-evaluator-messenger (put-input . xs) 'input)
|
(define-evaluator-messenger (put-input . xs) 'input)
|
||||||
|
@ -819,6 +821,7 @@
|
||||||
[(alive?) (and user-thread (not (thread-dead? user-thread)))]
|
[(alive?) (and user-thread (not (thread-dead? user-thread)))]
|
||||||
[(kill) (terminate+kill! 'evaluator-killed #f)]
|
[(kill) (terminate+kill! 'evaluator-killed #f)]
|
||||||
[(break) (user-break)]
|
[(break) (user-break)]
|
||||||
|
[(user-cust) user-cust]
|
||||||
[(limits) (set! limits (evaluator-message-args expr))]
|
[(limits) (set! limits (evaluator-message-args expr))]
|
||||||
[(handler) (set! eval-handler (car (evaluator-message-args expr)))]
|
[(handler) (set! eval-handler (car (evaluator-message-args expr)))]
|
||||||
[(input) (apply input-putter (evaluator-message-args expr))]
|
[(input) (apply input-putter (evaluator-message-args expr))]
|
||||||
|
|
|
@ -730,6 +730,19 @@ Ctrl-C was typed when the evaluator is currently executing, which
|
||||||
propagates the break to the evaluator's context.}
|
propagates the break to the evaluator's context.}
|
||||||
|
|
||||||
|
|
||||||
|
@defproc[(get-user-custodian [evaluator (any/c . -> . any)]) void?]{
|
||||||
|
|
||||||
|
Retrieves the @racket[evaluator]'s toplevel custodian. This returns a
|
||||||
|
value that is different from @racket[(evaluator '(current-custodian))]
|
||||||
|
or @racket[call-in-sandbox-context evaluator current-custodian] --- each
|
||||||
|
sandbox interaction is wrapped in its own custodian, which is what these
|
||||||
|
would return.
|
||||||
|
|
||||||
|
(One use for this custodian is with @racket[current-memory-use], where
|
||||||
|
the per-interaction sub-custodians will not be charged with the memory
|
||||||
|
for the whole sandbox.)}
|
||||||
|
|
||||||
|
|
||||||
@defproc[(set-eval-limits [evaluator (any/c . -> . any)]
|
@defproc[(set-eval-limits [evaluator (any/c . -> . any)]
|
||||||
[secs (or/c exact-nonnegative-integer? #f)]
|
[secs (or/c exact-nonnegative-integer? #f)]
|
||||||
[mb (or/c exact-nonnegative-integer? #f)])
|
[mb (or/c exact-nonnegative-integer? #f)])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user