syndicate-rkt/syndicate-examples/speed-tests/box-and-client/with-dataspace.rkt

35 lines
1.1 KiB
Racket
Raw Normal View History

#lang syndicate
2021-06-04 14:20:14 +00:00
;;; SPDX-License-Identifier: LGPL-3.0-or-later
;;; SPDX-FileCopyrightText: Copyright © 2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
2021-05-27 09:28:10 +00:00
(require "protocol.rkt")
(require "stats.rkt")
2021-06-01 08:04:10 +00:00
(define box
(action (ds LIMIT REPORT_EVERY)
(spawn #:name 'box
2021-06-01 08:04:10 +00:00
(define-field value 0)
(define reporter (report-stats REPORT_EVERY))
2021-06-01 08:04:10 +00:00
(at ds
(assert (BoxState (value)))
(when (message (SetBox $new-value))
(reporter new-value)
(when (= new-value LIMIT) (stop-current-facet))
2021-06-01 08:04:10 +00:00
(value new-value))))))
(define client
(action (ds)
(spawn #:name 'client
(define root-facet this-facet)
2021-06-01 08:04:10 +00:00
(at ds
2021-06-03 14:07:25 +00:00
(when (asserted (BoxState $value)) (send! ds (SetBox (+ value 1))))
(during (BoxState _)
(on-stop (log-info "Client detected box termination")
(stop-facet root-facet)))))))
2021-05-31 11:07:37 +00:00
(module+ main
(time
2021-06-03 20:40:51 +00:00
(actor-system/dataspace (ds)
(box this-turn ds 500000 100000)
(client this-turn ds))))