#lang racket/base ;; Assertions, Messages and Protocols for RacketMQ (provide (struct-out notification) (struct-out update-subscription) (struct-out subscription) (struct-out subscription-settings) (struct-out local-topic-config) (struct-out topic-demand) (struct-out local-topic-demand) (struct-out local-host) (struct-out canonical-local-host)) ;; A Topic is a URIString. ;; A Deadline is an (Option Number), where #f indicates "unbounded", ;; and numbers indicate a moment in time as a Unix epoch timestamp as ;; might be returned from `current-seconds`. ;; A Notification contains both `topic-name`, indicating the *local* ;; name for the topic that is being subscribed to, as well as ;; `canonical-topic`, which is the rel=self URL given by the upstream ;; topic itself. The former is our local key for finding resources; ;; the latter is a property of the topic content, not a property of ;; the subscription. The same is true of `canonical-hub`: it pertains ;; to the topic, not the subscription. The `topic-name` is the only ;; field pertaining to a subscription; all the others pertain to the ;; content. (struct notification (topic-name ;; Topic canonical-hub ;; Option URLString canonical-topic ;; Option Topic content ;; Bytes content-type) ;; Option String #:prefab) ;; MESSAGE ;; (update-subscription Topic URLString (Option SubscriptionSettings)) (struct update-subscription (topic callback settings) #:prefab) ;; MESSAGE ;; (subscription Topic URLString SubscriptionSettings) (struct subscription (topic callback settings-) #:prefab) ;; ASSERTION (struct subscription-settings (expiry-deadline ;; Deadline secret ;; Option Bytes poll-interval-seconds) ;; Option Number #:prefab) ;; (local-topic-config Topic (Option Number) (Option Number)) (struct local-topic-config (name max-age max-count) #:prefab) ;; ASSERTION ;; (topic-demand Topic (Option Number)) (struct topic-demand (topic-name poll-interval-seconds) #:prefab) ;; ASSERTION ;; (local-topic-demand String) (struct local-topic-demand (name) #:prefab) ;; ASSERTION ;; (local-host String) (struct local-host (name port) #:prefab) ;; ASSERTION ;; (canonical-local-host String) (struct canonical-local-host (name port) #:prefab) ;; ASSERTION