Fix up linkage of on-message etc.

This commit is contained in:
Tony Garnock-Jones 2013-06-10 19:51:58 -04:00
parent 08879f2a9a
commit 8cbf9f1c2e
1 changed files with 30 additions and 13 deletions

View File

@ -257,17 +257,7 @@ collection of macros helps streamline endpoint setup.
@defform[(observe-publishers/everything topic handler ...)] @defform[(observe-publishers/everything topic handler ...)]
@defform[(observe-publishers/everything: State topic handler ...)] @defform[(observe-publishers/everything: State topic handler ...)]
@defform[(build-endpoint pre-eid role handler ...)] @defform[(build-endpoint pre-eid role handler ...)]
@defform[(build-endpoint: State pre-eid role handler ...) @defform[(build-endpoint: State pre-eid role handler ...)]
#:grammar
[(handler unfiltered-handler
(match-state pattern handler ...)
(match-orientation pattern handler ...)
(match-conversation pattern handler ...)
(match-interest-type pattern handler ...)
(match-reason pattern handler ...))
(unfiltered-handler (on-presence expr ...)
(on-absence expr ...)
(on-message [pattern expr ...] ...))]]
)]{ )]{
The many variations on the core The many variations on the core
@ -302,6 +292,8 @@ note that @racket[?] is a wildcard in a topic pattern, while
@subsection{Receiving messages} @subsection{Receiving messages}
@defform[(on-message [pattern expr ...] ...)]{
Supply an @racket[on-message] handler clause to an endpoint definition Supply an @racket[on-message] handler clause to an endpoint definition
to handle incoming message events (as distinct from presence- or to handle incoming message events (as distinct from presence- or
absence-events). absence-events).
@ -315,8 +307,14 @@ The following endpoint @emph{subscribes} to all messages, but only
['hello (list (send-message 'goodbye) ['hello (list (send-message 'goodbye)
(quit))]))] (quit))]))]
}
}
@subsection{Action-only vs. State updates} @subsection{Action-only vs. State updates}
@defform[(match-state pattern handler ...)]{
If a group of handlers is wrapped in @racket[match-state], then all If a group of handlers is wrapped in @racket[match-state], then all
the wrapped handlers are expected to return the wrapped handlers are expected to return
@seclink["constructing-transitions"]{transition structures}. @seclink["constructing-transitions"]{transition structures}.
@ -341,8 +339,15 @@ or, explicitly accessing the endpoint's process's state,
(on-message ['ping (transition old-state (on-message ['ping (transition old-state
(send-message 'pong))])))] (send-message 'pong))])))]
}
@subsection{Handling presence and absence events} @subsection{Handling presence and absence events}
@deftogether[(
@defform[(on-presence expr ...)]
@defform[(on-absence expr ...)]
)]{
Other endpoints (in this or other processes) may have matching topics Other endpoints (in this or other processes) may have matching topics
and complementary orientations to the current endpoint. When such and complementary orientations to the current endpoint. When such
endpoints come and go, presence and absence events are generated in endpoints come and go, presence and absence events are generated in
@ -410,13 +415,19 @@ This way, if process B starts before process A, then B will
automatically wait until A is ready to receive ping requests before automatically wait until A is ready to receive ping requests before
issuing any. issuing any.
}
@subsection{Exit reasons} @subsection{Exit reasons}
@defform[(match-reason pattern handler ...)]{
If a handler is wrapped in a @racket[match-reason] form, then the exit If a handler is wrapped in a @racket[match-reason] form, then the exit
reason supplied to the @racket[delete-endpoint] or @racket[quit] reason supplied to the @racket[delete-endpoint] or @racket[quit]
action that led to the @racket[absence-event] is available to the action that led to the @racket[absence-event] is available to the
endpoint's @racket[on-absence] handler expression. endpoint's @racket[on-absence] handler expression.
}
@subsection[#:tag "updating-endpoints"]{Updating endpoints} @subsection[#:tag "updating-endpoints"]{Updating endpoints}
If, when an endpoint is created, an existing endpoint with an If, when an endpoint is created, an existing endpoint with an
@ -432,6 +443,12 @@ automatic support for avoiding such transients.
@subsection{Who am I talking to?} @subsection{Who am I talking to?}
@deftogether[(
@defform[(match-orientation pattern handler ...)]
@defform[(match-conversation pattern handler ...)]
@defform[(match-interest-type pattern handler ...)]
)]{
Wrapping a handler in @racket[match-orientation], Wrapping a handler in @racket[match-orientation],
@racket[match-conversation], and/or @racket[match-interest-type] gives @racket[match-conversation], and/or @racket[match-interest-type] gives
a handler access to the contents of the @racket[role] structure a handler access to the contents of the @racket[role] structure
@ -451,6 +468,8 @@ to the orientation of the current endpoint) or
See @secref{Examples} for examples of the use of See @secref{Examples} for examples of the use of
@racket[match-conversation] and friends. @racket[match-conversation] and friends.
}
@subsection[#:tag "participating-vs-observing"]{Participating in a conversation vs. observing conversations} @subsection[#:tag "participating-vs-observing"]{Participating in a conversation vs. observing conversations}
The core @racket[build-endpoint] form takes an expression evaluating The core @racket[build-endpoint] form takes an expression evaluating
@ -486,8 +505,6 @@ create @emph{subscriber}-oriented endpoints. The rationale for this is
that as a participant, the code should declare the role being played; that as a participant, the code should declare the role being played;
but as an observer, the code should declare the roles being observed. but as an observer, the code should declare the roles being observed.
}
@subsection[#:tag "naming-endpoints"]{Naming endpoints} @subsection[#:tag "naming-endpoints"]{Naming endpoints}
Endpoint names can be used to @seclink["updating-endpoints"]{update} Endpoint names can be used to @seclink["updating-endpoints"]{update}