#:meta-level in query-set and friends
This commit is contained in:
parent
c931b0aee5
commit
5aebc7fa75
|
@ -480,13 +480,13 @@
|
|||
|
||||
(define-syntax (query-value* stx)
|
||||
(syntax-parse stx
|
||||
[(_ field-name absent-expr P expr on-add:on-add on-remove:on-remove)
|
||||
[(_ field-name absent-expr P L:meta-level expr on-add:on-add on-remove:on-remove)
|
||||
(quasisyntax/loc stx
|
||||
(let ()
|
||||
(on (asserted P) #:priority *query-priority*
|
||||
(on (asserted P #:meta-level L.level) #:priority *query-priority*
|
||||
#,@(schedule-query-handler-stxs (attribute on-add.expr))
|
||||
(field-name expr))
|
||||
(on (retracted P) #:priority *query-priority*
|
||||
(on (retracted P #:meta-level L.level) #:priority *query-priority*
|
||||
#,@(schedule-query-handler-stxs (attribute on-remove.expr))
|
||||
(field-name absent-expr))
|
||||
field-name))]))
|
||||
|
@ -501,13 +501,13 @@
|
|||
|
||||
(define-syntax (query-set* stx)
|
||||
(syntax-parse stx
|
||||
[(_ field-name P expr on-add:on-add on-remove:on-remove)
|
||||
[(_ field-name P L:meta-level expr on-add:on-add on-remove:on-remove)
|
||||
(quasisyntax/loc stx
|
||||
(let ()
|
||||
(on (asserted P) #:priority *query-priority*
|
||||
(on (asserted P #:meta-level L.level) #:priority *query-priority*
|
||||
#,@(schedule-query-handler-stxs (attribute on-add.expr))
|
||||
(field-name (set-add (field-name) expr)))
|
||||
(on (retracted P) #:priority *query-priority*
|
||||
(on (retracted P #:meta-level L.level) #:priority *query-priority*
|
||||
#,@(schedule-query-handler-stxs (attribute on-remove.expr))
|
||||
(field-name (set-remove (field-name) expr)))
|
||||
field-name))]))
|
||||
|
@ -522,10 +522,10 @@
|
|||
|
||||
(define-syntax (query-hash* stx)
|
||||
(syntax-parse stx
|
||||
[(_ field-name P key-expr value-expr on-add:on-add on-remove:on-remove)
|
||||
[(_ field-name P L:meta-level key-expr value-expr on-add:on-add on-remove:on-remove)
|
||||
(quasisyntax/loc stx
|
||||
(let ()
|
||||
(on (asserted P) #:priority *query-priority*
|
||||
(on (asserted P #:meta-level L.level) #:priority *query-priority*
|
||||
(let ((key key-expr))
|
||||
(when (hash-has-key? (field-name) key)
|
||||
(log-warning "query-hash: field ~v with pattern ~v: overwriting existing entry ~v"
|
||||
|
@ -534,7 +534,7 @@
|
|||
key))
|
||||
#,@(schedule-query-handler-stxs (attribute on-add.expr))
|
||||
(field-name (hash-set (field-name) key value-expr))))
|
||||
(on (retracted P) #:priority *query-priority*
|
||||
(on (retracted P #:meta-level L.level) #:priority *query-priority*
|
||||
#,@(schedule-query-handler-stxs (attribute on-remove.expr))
|
||||
(field-name (hash-remove (field-name) key-expr)))
|
||||
field-name))]))
|
||||
|
@ -549,13 +549,13 @@
|
|||
|
||||
(define-syntax (query-hash-set* stx)
|
||||
(syntax-parse stx
|
||||
[(_ field-name P key-expr value-expr on-add:on-add on-remove:on-remove)
|
||||
[(_ field-name P L:meta-level key-expr value-expr on-add:on-add on-remove:on-remove)
|
||||
(quasisyntax/loc stx
|
||||
(let ()
|
||||
(on (asserted P) #:priority *query-priority*
|
||||
(on (asserted P #:meta-level L.level) #:priority *query-priority*
|
||||
#,@(schedule-query-handler-stxs (attribute on-add.expr))
|
||||
(field-name (hashset-add (field-name) key-expr value-expr)))
|
||||
(on (retracted P) #:priority *query-priority*
|
||||
(on (retracted P #:meta-level L.level) #:priority *query-priority*
|
||||
#,@(schedule-query-handler-stxs (attribute on-remove.expr))
|
||||
(field-name (hashset-remove (field-name) key-expr value-expr)))
|
||||
field-name))]))
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
(flush-output))))
|
||||
|
||||
(actor #:name 'mutator
|
||||
(until (asserted 'observer-in-ds-ready))
|
||||
(assert! `(item a 1))
|
||||
(assert! `(item b 2))
|
||||
(assert! `(item b 3))
|
||||
|
@ -54,3 +55,12 @@
|
|||
(assert! `(item c 4))
|
||||
(send! 'dump)
|
||||
(forever))
|
||||
|
||||
(dataspace (actor #:name 'observer-in-ds
|
||||
(forever
|
||||
(assert 'observer-in-ds-ready #:meta-level 1)
|
||||
(on-start (log-info "observer-in-ds: STARTING"))
|
||||
(define/query-set items `(item ,$a ,$b) #:meta-level 1 (list a b))
|
||||
(on (message 'dump #:meta-level 1)
|
||||
(log-info "observer-in-ds: ~v" (items)))))
|
||||
(forever))
|
||||
|
|
Loading…
Reference in New Issue