Avoid silly use of macro
This commit is contained in:
parent
25fb492083
commit
b09aef3912
|
@ -80,18 +80,18 @@
|
||||||
(begin/dataflow (log-syndicate/federation-debug "::: ~a specs ~v" nodeid (specs)))
|
(begin/dataflow (log-syndicate/federation-debug "::: ~a specs ~v" nodeid (specs)))
|
||||||
(begin/dataflow (log-syndicate/federation-debug "::: ~a subs ~v" nodeid (subs))))
|
(begin/dataflow (log-syndicate/federation-debug "::: ~a subs ~v" nodeid (subs))))
|
||||||
|
|
||||||
(define-syntax with-localid->sub
|
(define (call-with-sub localid connid f)
|
||||||
(syntax-rules (->)
|
|
||||||
((_ (localid connid -> sub) body ...)
|
|
||||||
(match (hash-ref (subs) localid #f)
|
(match (hash-ref (subs) localid #f)
|
||||||
[#f (log-syndicate/federation-error
|
[#f (log-syndicate/federation-error
|
||||||
"Mention of nonexistent local ID ~v from connection ~v. Ignoring."
|
"Mention of nonexistent local ID ~v from connection ~v. Ignoring."
|
||||||
localid
|
localid
|
||||||
connid)]
|
connid)]
|
||||||
[sub body ...]))))
|
[sub (f sub)]))
|
||||||
|
|
||||||
(define (unsubscribe! localid connid)
|
(define (unsubscribe! localid connid)
|
||||||
(with-localid->sub [localid connid -> sub]
|
(call-with-sub
|
||||||
|
localid connid
|
||||||
|
(lambda (sub)
|
||||||
(define new-holders (hash-remove (subscription-holders sub) connid))
|
(define new-holders (hash-remove (subscription-holders sub) connid))
|
||||||
(specs (hash-remove (specs) (subscription-spec sub)))
|
(specs (hash-remove (specs) (subscription-spec sub)))
|
||||||
(subs (if (hash-empty? new-holders)
|
(subs (if (hash-empty? new-holders)
|
||||||
|
@ -111,17 +111,19 @@
|
||||||
(send! (router-outbound peer (Unsubscribe localid)))))]
|
(send! (router-outbound peer (Unsubscribe localid)))))]
|
||||||
[1 (for [(peer (in-hash-keys new-holders))] ;; there will only be one, ≠ connid
|
[1 (for [(peer (in-hash-keys new-holders))] ;; there will only be one, ≠ connid
|
||||||
(send! (router-outbound peer (Unsubscribe localid))))]
|
(send! (router-outbound peer (Unsubscribe localid))))]
|
||||||
[_ (void)])))
|
[_ (void)]))))
|
||||||
|
|
||||||
(define (adjust-matches localid connid captures delta expected-outcome ctor)
|
(define (adjust-matches localid connid captures delta expected-outcome ctor)
|
||||||
(with-localid->sub [localid connid -> sub]
|
(call-with-sub
|
||||||
|
localid connid
|
||||||
|
(lambda (sub)
|
||||||
(define-values (new-matches outcome)
|
(define-values (new-matches outcome)
|
||||||
(bag-change (subscription-matches sub) captures delta #:clamp? #t))
|
(bag-change (subscription-matches sub) captures delta #:clamp? #t))
|
||||||
(subs (hash-set (subs) localid (struct-copy subscription sub [matches new-matches])))
|
(subs (hash-set (subs) localid (struct-copy subscription sub [matches new-matches])))
|
||||||
(when (eq? outcome expected-outcome)
|
(when (eq? outcome expected-outcome)
|
||||||
(for ([(peer peer-subid) (in-hash (subscription-holders sub))])
|
(for ([(peer peer-subid) (in-hash (subscription-holders sub))])
|
||||||
(when (not (equal? peer connid))
|
(when (not (equal? peer connid))
|
||||||
(send! (router-outbound peer (ctor peer-subid captures))))))))
|
(send! (router-outbound peer (ctor peer-subid captures)))))))))
|
||||||
|
|
||||||
(during (observe (router-connection nodeid $connid))
|
(during (observe (router-connection nodeid $connid))
|
||||||
(assert (router-connection nodeid connid))
|
(assert (router-connection nodeid connid))
|
||||||
|
@ -215,9 +217,11 @@
|
||||||
(relay-add-or-del localid captures -1 'present->absent Del))
|
(relay-add-or-del localid captures -1 'present->absent Del))
|
||||||
|
|
||||||
(on (message (router-inbound connid (Msg $localid $captures)))
|
(on (message (router-inbound connid (Msg $localid $captures)))
|
||||||
(with-localid->sub [localid connid -> sub]
|
(call-with-sub
|
||||||
|
localid connid
|
||||||
|
(lambda (sub)
|
||||||
(for ([(peer peer-subid) (in-hash (subscription-holders sub))])
|
(for ([(peer peer-subid) (in-hash (subscription-holders sub))])
|
||||||
(when (not (equal? peer connid))
|
(when (not (equal? peer connid))
|
||||||
(send! (router-outbound peer (Msg peer-subid captures)))))))
|
(send! (router-outbound peer (Msg peer-subid captures))))))))
|
||||||
|
|
||||||
)))
|
)))
|
||||||
|
|
Loading…
Reference in New Issue