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

33 lines
1015 B
Racket
Raw Normal View History

#lang syndicate
2021-06-04 14:20:14 +00:00
;;; SPDX-License-Identifier: LGPL-3.0-or-later
2024-03-10 11:43:06 +00:00
;;; SPDX-FileCopyrightText: Copyright © 2021-2024 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
2021-05-27 09:28:10 +00:00
2023-10-31 21:51:34 +00:00
(require "protocol.rkt.prs")
(require "stats.rkt")
2021-06-10 09:42:07 +00:00
(define (box ds LIMIT REPORT_EVERY)
(spawn #:name 'box
(define-field value 0)
(define reporter (report-stats REPORT_EVERY))
(at ds
(assert (BoxState (value)))
(on (message (SetBox $new-value))
2021-06-10 09:42:07 +00:00
(reporter new-value)
(when (= new-value LIMIT) (stop-current-facet))
(value new-value)))))
2021-06-01 08:04:10 +00:00
2021-06-10 09:42:07 +00:00
(define (client ds)
(spawn #:name 'client
(define root-facet this-facet)
(at ds
(on (asserted (BoxState $value)) (send! (SetBox (+ value 1))))
2021-06-10 09:42:07 +00:00
(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-17 12:57:06 +00:00
(standard-actor-system (ds)
2021-06-10 09:42:07 +00:00
(box ds 500000 100000)
(client ds))))