I[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZNone*+0357=GIJN?Different exchange types are defined using record syntax. The  and  API functions are called during the exchange lifecycle when incoming traffic arrives. Configuration messages are completely arbitrary types and the exchange type author is entirely responsible for decoding them. Messages posted to the exchange (see the  data type) are passed to the  API function along with the exchange type's own internal state. Both API functions return a new (potentially updated) state and run in the Process monad.Messages sent to an exchange can optionally provide a routing key and a list of (key, value) headers in addition to the underlying payload.a  routing key for the payload arbitrary key-value headers the underlying Message payload Opaque handle to an exchange.  Starts an exchange process with the given . 1Starts an exchange as part of a supervision tree.@Example: > childSpec = toChildStart $ startSupervisedRef exType1Starts an exchange as part of a supervision tree.=Example: > childSpec = toChildStart $ startSupervised exTypePosts an arbitrary [ datum to an exchange#. The raw datum is wrapped in the  data type, with its  set to "" and its   to [].Posts a  to an exchange.Sends an arbitrary [ datum to an exchange+, for use as a configuration change - see  for details.Utility for creating a  datum from its ,   and  .Utility for custom exchange type authors - evaluates a set of primitive message handlers from left to right, returning the first which evaluates to Just a, or the initial e! value if all the handlers yield Nothing.+\]^ _`abc defghijklmnopq _`ab \]^ _`abc defghijklmnopqNone*+0357=GIJN  Given to a router- to indicate whether clients should receive  payloads only, or the whole  object itself.Used to convert a  into a  routing key.4Things that can be used as binding keys in a router.CThe binding key used by the built-in key and header based routers.!A router that matches on a  . To bind a client Process to such an exchange, use the % function."FA router that matches on a specific (named) header. To bind a client Process to such an exchange, use the & function.# Defines a router exchange. The ; is used to construct a binding (i.e., an instance of the  type k) for each incoming S. Such bindings are matched against bindings stored in the exchange. Clients of a router> exchange are identified by a binding, mapped to one or more rs.The format of the bindings, nature of their storage and mechanism for submitting new bindings is implementation dependent (i.e., will vary by exchange type). For example, the ! and " implementations both use the # data type, which can represent a  key or a  ] and content. As with all custom exchange types, bindings should be submitted by evaluating  with a suitable data type.$ Defines a router( that can be used in a supervision tree.%-Add a binding (for the calling process) to a ! exchange.&-Add a binding (for the calling process) to a " exchange.'Send a [ message to the supplied  *. The given datum will be converted to a  , with the  set to "" and the   to [].9The routing behaviour will be dependent on the choice of  given when initialising the router.(Send a  to the supplied  <. The routing behaviour will be dependent on the choice of  given when initialising the router."stuvwx !"#y$z%&'({|}~ !"#y$%&'(stuvwx !"#y$z%&'({|}~None*+0357=GIJN* Start a new broadcast exchange% and return a handle to the exchange.+The 4 of a broadcast exchange. Can be combined with the startSupervisedRef and startSupervised APIs.,Create a binding to the given broadcast exchange( for the calling process and return an  that can be used in the expect and  receiveWaits family of messaging primitives. This form of client interaction helps avoid cluttering the caller's mailbox with  data, since the  InputChannelW provides a separate input stream (in a similar fashion to a typed channel). Example: _is <- broadcastClient ex msg <- receiveWait [ matchInputStream is ] handleMessage (payload msg)-&Bind the calling process to the given broadcast exchange . For each  the exchange receives, only the payload will be sent" to the calling process' mailbox.Example:(producer) > post ex HelloB(consumer) > bindToBroadcaster ex > expect >>= liftIO . putStrLn.)*+,-)*+,-)*+,-(c) Tim Watson 2012 - 2014BSD3 (see the file LICENSE)%Tim Watson <watson.timothy@gmail.com> experimental#non-portable (requires concurrency)None.  !"#$%&'()*+,-/   *+,-) #$'(!%"&(c) Well-Typed / Tim WatsonBSD3 (see the file LICENSE)%Tim Watson <watson.timothy@gmail.com> experimental#non-portable (requires concurrency)None +0;IJN."Opaque handle to an Event Manager./ Start a new  Event Manager, process and return an opaque handle to it.2.Broadcast an event to all registered handlers.3pAdd a new event handler. The handler runs in its own process, which is spawned locally on behalf of the caller.4As 3, but operates over a raw #Control.Distributed.Process.Message. ./01234./01234./01234 ./01234(c) Tim Watson 2012 - 2013BSD3 (see the file LICENSE)%Tim Watson <watson.timothy@gmail.com> experimental#non-portable (requires concurrency)None*+035=GIJN6Send all buffered messages (or wait until one arrives):Send a notification once messages are ready to be received=Accumulate messages in the buffer, dropping them if necessary99Bundle of statistics data, available on request via the  mailboxStats API call.?Mail delivery.Ahandle to the sending mailboxBlist of raw messagesCnumber of messages deliveredDtotal dropped/skipped messagesEFMarker message indicating to the owning process that mail has arrived.A Closure used to filter messages in active mode.GGRepresents the maximum number of messages the internal buffer can hold.H(Describes the different types of buffer.I:FIFO buffer, limiter drops the eldest message (queue head)J8unordered buffer, limiter drops the newest (top) messageK7FIFO buffer, limiter refuses (i.e., drops) new messagesLOpaque handle to a mailbox.M(Start a mailbox for the calling process. create = getSelfPid >>= startN!Start a mailbox for the supplied  ProcessId. start = spawnLocal $ runOAs Nv, but suitable for use in supervisor child specs. This variant is for use when you want to access to the underlying L9 handle in your supervised child refs. See supervisor's ChildRef data type for more information.OExample: > childSpec = toChildStart $ startSupervised pid bufferType mboxLimitSee &Control.Distributed.Process.SupervisorPAs N1, but suitable for use in supervisor child specs.VExample: > childSpec = toChildStart $ startSupervisedMailbox pid bufferType mboxLimitSee &Control.Distributed.Process.SupervisorRun the mailbox server loop.QMonitor a mailbox.R Instructs the mailbox to send a E signal as soon as any mail is available for delivery. Once the signal is sent, it will not be resent, even when further mail arrives, until R is called again.NB: signals are only+ delivered to the mailbox's owning process.S Instructs the mailbox to send a ?Y as soon as any mail is available, or immediately (if the buffer already contains data).NB: signals are only+ delivered to the mailbox's owning process.TAlters the mailbox's limit+ - this might cause messages to be dropped!U%Posts a message to someone's mailbox.V5Obtain statistics (from/to anywhere) about a mailbox.XA  do-nothing1 filter that accepts all messages (i.e., returns Keep for any input).YA filter that takes a )Closure (Message -> Process FilterResult)d holding the filter function and applies it remotely (i.e., in the mailbox's own managed process).ZCInstructs the mailbox to deliver all pending messages to the owner.z56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ&56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ&LNOPMTVQGHIJK9:;<=>URZSEF?@ABCD5678XYWO56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ(c) Tim Watson 2013 - 2014BSD3 (see the file LICENSE)%Tim Watson <watson.timothy@gmail.com> experimental#non-portable (requires concurrency)NoneQ  !"#$%&'()*+,-56789:;<=>?@ABCDEFGHIJKLMNPQRSTVWXYZ       !"#$%&'()*+,-./0123456789:;<==>?@ABBCDEFGGHIJKLMNOPQ6RSTUVWXYZ[\]^_`abcdefghijklmnopYqrsttuvwxyz{|}~  z{4tt\^^M_`be jdistr_CqvqAZVEziX6ml2Vwn7232.Control.Distributed.Process.Execution.Exchange2Control.Distributed.Process.Execution.EventManager-Control.Distributed.Process.Execution.Mailbox7Control.Distributed.Process.Execution.Exchange.Internal5Control.Distributed.Process.Execution.Exchange.Router8Control.Distributed.Process.Execution.Exchange.Broadcast%Control.Distributed.Process.Execution ExchangeTypenamestate configureExrouteExMessagekeyheaderspayloadExchange startExchangestartSupervisedRefstartSupervised runExchangepost postMessageconfigureExchange createMessage applyHandlers RelayType PayloadOnly WholeMessageBindingSelectorBindableBindingBindKey bindingKey BindHeader headerNameBindNone HeaderNamemessageKeyRouterheaderContentRouterroutersupervisedRouterbindKey bindHeaderroute routeMessageBroadcastExchangebroadcastExchangebroadcastExchangeTbroadcastClientbindToBroadcaster EventManagerstartnotify addHandleraddMessageHandler FilterResultKeepSkipSend MailboxStatspendingMessagesdroppedMessages currentLimit owningProcessDeliveryboxmessagescount totalDroppedNewMailLimit BufferTypeQueueStackRingMailbox createMailbox startMailboxstartSupervisedMailboxmonitoractiveresize statistics __remoteTableacceptEverythingacceptMatchingdeliverdistr_KAnEvuZEhZc0y1Ml6i83So(Control.Distributed.Process.Serializable SerializableControlMessage ConfigurePostpidcchanxType sendCtrlMsgdoStartexInitprocessDefinition handleMonitor convertToCChandleControlMessage$fNFDataControlMessage$fBinaryControlMessage$fNFDataMessage$fBinaryMessage$fLinkableExchange$fResolvableExchange$fShowExchange$fBinaryExchange*Control.Distributed.Process.Internal.Types ProcessIdRouterStatebindingsselector relayTypesupervisedRouterRefrouterTapiRoute apiConfigure $fBindablek$fHashableBinding$fNFDataBinding$fBinaryBindingdistr_HYg6UQutl3vFpMhwtLKTXw2Control.Distributed.Process.Extras.Internal.Unsafe InputStream BroadcastEx _routingTablechannelBroadcastClients BindPleaseBindFailBindOk outputStream inputStream PidBinding OutputStream WriteChanWriteSTMNoWriteBindSTM stmClientstmSendBindPort portClientportSend writeToStreamhandleServerFailure routingTable$fNFDataBindPlease$fBinaryBindPlease$fNFDataBindFail$fBinaryBindFail$fNFDataBindOk$fBinaryBindOk$fNFDataBindPort$fBinaryBindPortex newHandlerlisten$fResolvableEventManager$fBinaryEventManagerActiveNotifyPassiveFilter runMailboxSkippedCount_buffer_state BufferState_mode_bufferT_limit_size_dropped_ownerctrlChanBufferedtagpushpopadjustdropResize SetActiveModeModeStatsReq defaultStatedoStartMailboxmboxInit everythingmatchinghandleControlMessageshandleGetStatshandleRawInputs handlePostsendNotificationsendMailinsertisQueueisStackgetRgetLmode bufferTypelimitsizedroppedownerbufferstats$fBufferedState $fShowMode $fBinaryMode$fBinaryFilterResult$fBinaryStatsReq $fBinaryPost$fBinaryMailboxStats$fBinaryDelivery$fBinaryNewMail$fRoutableMailbox$fResolvableMailbox$fLinkableMailbox $fShowMailbox$fBinaryMailboxeverything__staticeverything__sdicteverything__tdictmatching__staticmatching__sdict