h*W OF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                    0.3.6 Safe-Inferreddistributed-process-extras Opaque lock.distributed-process-extras Take a lock.distributed-process-extras Release lock.distributed-process-extras=Create exclusive lock. Only one process could take such lock.distributed-process-extrasCreate quantity lock. A fixed number of processes can take this lock simultaniously.distributed-process-extrasRun action under a held lock. Safe-Inferred%& distributed-process-extrasOpaque type of MultiMaps.distributed-process-extrasClass of things that can be inserted in a map or a set (of mapped values), for which instances of Eq and Hashable must be present.distributed-process-extrasO(n) Reduce this map by applying a binary operator to all elements, using the given starting value (typically the right-identity of the operator).     Safe-Inferred6   Safe-Inferred 0  !#"  !#" Safe-Inferred 7<&distributed-process-extras$Given when a server is unobtainable.(distributed-process-extras(A simple means of mapping to a receiver.-distributed-process-extras?Class of things that you can route/send serializable message to.distributed-process-extras+Send a message to the target asynchronously/distributed-process-extras Send some NFData message to the target asynchronously, forcing evaluation (i.e., deepseq ) beforehand.0distributed-process-extras*Class of things that can be resolved to a .1distributed-process-extras*Resolve the reference to a process id, or Nothing if resolution fails2distributed-process-extras Unresolvable  Addressable Message3distributed-process-extras;Class of things that can be killed (or instructed to exit).4distributed-process-extras/Kill (instruct to exit) generic process, using  primitive.5distributed-process-extras/Kill (instruct to exit) generic process, using  primitive.9distributed-process-extrasClass of things to which a Process can link itself.:distributed-process-extras Create a link with the supplied object.;distributed-process-extras Provides a reason for process termination.<distributed-process-extrasindicates normal exit=distributed-process-extrasnormal response to a ?>distributed-process-extrasabnormal (error) shutdown?distributed-process-extras A ubiquitous shutdown signal that can be used to maintain a consistent shutdown/stop protocol for any process that wishes to handle it.Adistributed-process-extrasUsed internally in whereisOrStart. Sent as (RegisterSelf,ProcessId).Cdistributed-process-extras#Simple representation of a channel.Ddistributed-process-extrasWait cancellation message.Fdistributed-process-extrasGenerates unique G for messages and response pairs. Each process that depends, directly or indirectly, on the call mechanisms in 'Control.Distributed.Process.Global.Call should have at most one TagPool on which to draw unique message tags.Gdistributed-process-extrasTags provide uniqueness for messages, so that they can be matched with their response.Hdistributed-process-extrasIntroduces a class that brings NFData into scope along with Serializable, such that we can force evaluation. Intended for use with the UnsafePrimitives module (which wraps ,Control.Distributed.Process.UnsafePrimitives-), and guarantees evaluatedness in terms of NFData. Please note that we cannot guarantee that an NFData( instance will behave the same way as a Binary one with regards evaluation, so it is still possible to introduce unexpected behaviour by using unsafe primitives in this way.Idistributed-process-extras?Create a new per-process source of unique message identifiers.Jdistributed-process-extras Extract a new identifier from a F.Kdistributed-process-extrasA synchronous version of -, this monitors the remote node and returns Nothing if the node goes down (since a remote node failing or being non-contactible has the same effect as a process not being registered from the caller's point of view).Ldistributed-process-extrasresolve the Resolvable or die with specified msg plus details of what didn't resolve'GFIJ9:345012-./678,()*+ABKLDEC?@;><=&'H'GFIJ9:345012-./678,()*+ABKLDEC?@;><=&'H(c) Tim Watson 2013 - 2017, Parallel Scientific (Jeff Epstein) 2012BSD3 (see the file LICENSE) experimental#non-portable (requires concurrency) Safe-Inferred 67<"]udistributed-process-extras Monitor any  Resolvable object.vdistributed-process-extras Wait until  Resolvable object will exit. Return immediately if object can't be resolved.wdistributed-process-extrasSend message to  Addressable object.xdistributed-process-extrasCheck if specified process is alive. Information may be outdated.ydistributed-process-extrasApply the supplied expression n timeszdistributed-process-extrasLike  but sans space leak{distributed-process-extrasSpawn a new (local) process. This variant takes an initialisation action and a secondary expression from the result of the initialisation to  Process ()=. The spawn operation synchronises on the completion of the before action, such that the calling process is guaranteed to only see the newly spawned  ProcessId5 once the initialisation has successfully completed.|distributed-process-extrasNode local version of 8. Note that this is just the sequential composition of  and . (The Unified semantics that underlies Cloud Haskell does not even support a synchronous link operation)}distributed-process-extrasLike |#, but monitors the spawned process.~distributed-process-extrasCH's  primitive, unlike Erlang's, will trigger when the target process dies for any reason. This function has semantics like Erlang's: it will trigger & only when the target dies abnormally.distributed-process-extrasReturns the pid of the process that has been registered under the given name. This refers to a local, per-node registration, not global registration. If that name is unregistered, a process is started. This is a handy way to start per-node named servers.distributed-process-extrasHelper function will register itself under a given name and send result to given Process.distributed-process-extrasA remote equivalent of . It deals with the node registry on the given node, and the process, if it needs to be started, will run on that node. If the node is inaccessible, Nothing will be returned.distributed-process-extrasAn alternative to  that allows both predicate and action to be expressed in one parameter.distributed-process-extras?Safe (i.e., monitored) waiting on an expected response/message.,-./0129:345678{|}~Kyuvxzw,-./0129:345678{|}~Kyuvxzw Safe-Inferred7<'distributed-process-extrasA generic input channel that can be read from in the same fashion as a typed channel (i.e.,  ReceivePort3). To read from an input stream in isolation, see . To compose an  with reads on a process' mailbox (and/or typed channels), see .distributed-process-extras Wrap any Typeable datum in a PCopy. We hide the constructor to discourage arbitrary uses of the type, since PCopy7 is a specialised and potentially dangerous construct.distributed-process-extras Matches on PCopy m and returns the m within. This potentially allows us to bypass serialization (and the type constraints it enforces) for local message passing (i.e., with UnencodedMessage$ data), since PCopy is just a shim.distributed-process-extras Given a raw Message, attempt to unwrap a Typeable datum from an enclosing PCopy wrapper.distributed-process-extras Matches on a TypedChannel (PCopy a).distributed-process-extras Create a new .distributed-process-extras Read from an . This is a blocking operation.distributed-process-extras Constructs a Match for a given  InputChannel.  ,(c) Tim Watson, Jeff Epstein, Alan ZimmermanBSD3 (see the file LICENSE) Tim Watson experimental#non-portable (requires concurrency) Safe-Inferred7<1distributed-process-extras)Send to a process when a timeout expires.distributed-process-extras Represents a timeout! in terms of microseconds, where  stands for infinity and Just 0 , no-delay.distributed-process-extrasRepresents either a delay of 5, an infinite wait or no delay (i.e., non-blocking).distributed-process-extrasA time interval.distributed-process-extras)Defines the time unit for a Timeout valuedistributed-process-extrasconverts the supplied  TimeInterval to microsecondsdistributed-process-extras&Convenience for making timeouts; e.g., ?receiveTimeout (after 3 Seconds) [ match (\"ok" -> return ()) ]distributed-process-extrasConvenience for making ; e.g., "let ti = within 5 Seconds in .....distributed-process-extrasgiven a number, produces a  TimeInterval of microsecondsdistributed-process-extrasgiven a number, produces a  TimeInterval of millisecondsdistributed-process-extrasgiven a number, produces a  TimeInterval of secondsdistributed-process-extrasgiven a number, produces a  TimeInterval of minutesdistributed-process-extrasgiven a number, produces a  TimeInterval of hoursdistributed-process-extrasconverts the supplied TimeUnit to microsecondsdistributed-process-extrasConstructs an inifinite .distributed-process-extrasConstructs a no-wait distributed-process-extrasSends the calling process TimeoutNotification tag after time microsecondsdistributed-process-extrasgiven a  TimeInterval, provide an equivalent NominalDiffTimdistributed-process-extrasgiven a NominalDiffTim, provide an equivalent  TimeInterval@distributed-process-extrasgiven a Delay, provide an equivalent NominalDiffTimdistributed-process-extrasgiven a NominalDiffTim, provide an equivalent Delay@distributed-process-extras Create a  from a number of microseconds.distributed-process-extrasAllow (+) and (-) operations on  TimeIntervalsdistributed-process-extrasAllow (+) and (-) operations on Delays   (c) Tim Watson 2013 - 2017BSD3 (see the file LICENSE)%Tim Watson  experimental#non-portable (requires concurrency) Safe-Inferred3(distributed-process-extrasCreate an unencoded Message for any  Serializable type. (c) Tim Watson 2012 - 2017BSD3 (see the file LICENSE)%Tim Watson  experimental#non-portable (requires concurrency) Safe-Inferred7<<distributed-process-extras represents a tick event that timers can generatedistributed-process-extras#cancellation message sent to timersdistributed-process-extrasan opaque reference to a timerdistributed-process-extrasblocks the calling Process for the specified TimeInterval. Note that this function assumes that a blocking receive is the most efficient approach to acheiving this, however the runtime semantics (particularly with regards scheduling) should not differ from threadDelay in practise.distributed-process-extrasLiterate way of saying sleepFor 3 Seconds.distributed-process-extrasstarts a timer which sends the supplied message to the destination process after the specified time interval.distributed-process-extras*runs the supplied process action(s) after t has elapseddistributed-process-extrascalls exit pid reason after t has elapseddistributed-process-extras"kills the specified process after t has elapseddistributed-process-extrasstarts a timer that repeatedly sends the supplied message to the destination process each time the specified time interval elapses. To stop messages from being sent in future,  can be called.distributed-process-extras?runs the supplied process action(s) repeatedly at intervals of tdistributed-process-extrasresets a running timer. Note: Cancelling a timer does not guarantee that all its messages are prevented from being delivered to the target process. Also note that resetting an ongoing timer (started using the  or  functions) will only cause the current elapsed period to time out, after which the timer will continue running. To stop a long-running timer permanently, you should use  instead.distributed-process-extraspermanently cancels a timerdistributed-process-extrascancels a running timer and flushes any viable timer messages from the process' message queue. This function should only be called by the process expecting to receive the timer's messages!distributed-process-extrassets up a timer that sends  repeatedly at intervals of t  Safe-Inferred=6,012-./9:345678H()*+?@;><=DE&'CGFu{|}~yxwvIJ1,012-./9:345678H()*+?@;><=DE&'CGFu{|}~yxwvIJ (c) Tim Watson 2013 - 2017BSD3 (see the file LICENSE)%Tim Watson  experimental#non-portable (requires concurrency) Safe-Inferred %&7<Adistributed-process-extras,Start a system logger that writes to a file. This is a  very basic" file logging facility, that uses regular buffered file I/O (i.e., System.IO.hPutStrLn et al) under the covers. The handle is closed appropriately if/when the logging process terminates.See :Control.Distributed.Process.Management.mxAgentWithFinalize for futher details about management agents that use finalizers.distributed-process-extrasStart a  system logger process as a management agent.distributed-process-extras'This expression does the actual loggingdistributed-process-extras1An expression used to clean up any residual statedistributed-process-extras The initial  to usedistributed-process-extras2An expression used to format logging messages/text!! (c) Tim Watson 2013 - 2017BSD3 (see the file LICENSE)%Tim Watson  experimental#non-portable (requires concurrency) Safe-Inferred7<Hjdistributed-process-extrasSent to subscribing processes when a dis-connection (from a remote node) is detected.distributed-process-extrasSent to subscribing processes when a connection (from a remote node) is detected.distributed-process-extrasThe  MxAgentId for the node monitoring agent.distributed-process-extrasStart monitoring node connection/disconnection events. When a connection event occurs, the calling process will receive a message  NodeUp NodeId: in its mailbox. When a disconnect occurs, the corollary NodeDown NodeId# message will be delivered instead.No guaranatee is made about the timeliness of the delivery, nor can the receiver expect that the node (for which it is being notified) is still upconnected or downdisconnected at the point when it receives a message from the node monitoring agent.distributed-process-extrasStop monitoring node connection/disconnection events. This does not flush the caller's mailbox, nor does it guarantee that any/all node up/down notifications will have been delivered before it is evaluated.distributed-process-extras-Starts the node monitoring agent. No call to  monitorNodes and unmonitorNodes will have any effect unless the agent is already running. Note that we make no guarantees what-so-ever about the timeliness or ordering semantics of node monitoring notifications.+(c) Parallel Scientific (Jeff Epstein) 2012BSD3 (see the file LICENSE) experimental#non-portable (requires concurrency) Safe-Inferred7Odistributed-process-extrasSends a message of type a to the given process, to be handled by a corresponding callResponse... function, which will send back a message of type b. The tag is per-process unique identifier of the transaction. If the timeout expires or the target process dies, Nothing will be returned.distributed-process-extrasLike , but with no timeout. Returns Nothing if the target process dies.distributed-process-extrasLike , but sends the message to multiple recipients and collects the results.distributed-process-extras+Produces a Match that can be used with the ) family of message-receiving functions.  callResponse. will respond to a message of type a sent by *, and will respond with a value of type b.distributed-process-extras+Produces a Match that can be used with the  family of message-receiving functions. When calllForward receives a message of type from from  (and similar), it will forward the message to another process, who will be responsible for responding to it. It is the user's responsibility to ensure that the forwarding process is linked to the destination process, so that if it fails, the sender will be notified.distributed-process-extrasThe message handling code is started in a separate thread. It's not automatically linked to the calling thread, so if you want it to be terminated when the message handling thread dies, you'll need to call link yourself.   !"#$$%&'()*+&'()*,-../0123456789:;<=>?@ABCDEFFGGHIIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                                     7distributed-process-extras-0.3.6-DsiO4vtFsmHD8G1zhPF1niControl.Concurrent.Utils?Control.Distributed.Process.Extras.Internal.Containers.MultiMap;Control.Distributed.Process.Extras.Internal.Queue.PriorityQ6Control.Distributed.Process.Extras.Internal.Queue.SeqQ1Control.Distributed.Process.Extras.Internal.Types6Control.Distributed.Process.Extras.Internal.Primitives2Control.Distributed.Process.Extras.Internal.Unsafe'Control.Distributed.Process.Extras.Time3Control.Distributed.Process.Extras.UnsafePrimitives(Control.Distributed.Process.Extras.Timer"Control.Distributed.Process.Extras,Control.Distributed.Process.Extras.SystemLog-Control.Distributed.Process.Extras.Monitoring'Control.Distributed.Process.Extras.Calldistributed-process-extras Control.MonadforeverLockmkExclusiveLockmkQLockwithLockMultiMap Insertableemptysizeinsertmemberlookupdeletefilter filterWithKey foldrWithKeytoList $fInsertablea$fFoldableMultiMap PriorityQqisEmpty singletonenqueuedequeuepeekSeqQ$fEqSeqQ $fShowSeqQServerDisconnected RecipientPid RegisteredRemoteRegistered AddressableRoutablesendTo unsafeSendTo ResolvableresolveunresolvableMessageKillablekillProcexitProc Monitored mkMonitor checkMonitorLinkablelinkTo ExitReason ExitNormal ExitShutdown ExitOtherShutdown RegisterSelfChannel CancelWaitTagPoolTagNFSerializable newTagPoolgetTag whereisRemote resolveOrDie$fNFSerializableSendPort$fNFSerializablea$fNFDataCancelWait$fBinaryCancelWait$fNFDataRegisterSelf$fBinaryRegisterSelf$fNFDataShutdown$fBinaryShutdown$fNFDataExitReason$fBinaryExitReason$fResolvable(,)$fResolvableList$fResolvableProcessId0$fMonitoredaMonitorRefProcessMonitorNotification $fKillablep $fRoutableFUN $fRoutable(,)$fRoutableList$fRoutableProcessId$fAddressableProcessId$fRoutableRecipient$fResolvableRecipient$fNFDataRecipient$fBinaryRecipient$fNFDataServerDisconnected$fBinaryServerDisconnected$fGenericServerDisconnected$fGenericRecipient$fShowRecipient $fEqRecipient$fGenericExitReason$fEqExitReason$fShowExitReason$fGenericShutdown$fShowShutdown $fEqShutdown$fGenericRegisterSelf$fEqCancelWait$fShowCancelWait$fGenericCancelWaitmonitor awaitExitdeliverisProcessAlivetimesforever'spawnSignalledspawnLinkLocalspawnMonitorLocal linkOnFailurewhereisOrStart __remoteTablewhereisOrStartRemote matchCond awaitResponse InputStreamNullPCopyInvalidBinaryShimpCopymatchPpUnwrap matchChanPnewInputStreamreadInputStreammatchInputStream $fBinaryPCopy $fNFDataPCopy$fNFDataNullInputStream$fBinaryNullInputStream$fGenericNullInputStream$fShowNullInputStream$fEqNullInputStream$fGenericPCopy$fShowInvalidBinaryShim$fEqInvalidBinaryShimTimeoutNotificationTimeoutDelayInfinityNoDelay TimeIntervalTimeUnitDaysHoursMinutesSecondsMillisMicros asTimeoutafterwithin microSeconds milliSecondssecondsminuteshours timeToMicros infiniteWaitnoWaittimeouttimeIntervalToDiffTimediffTimeToTimeIntervaldelayToDiffTimediffTimeToDelaymicrosecondsToNominalDiffTime$fNFDataTimeUnit$fBinaryTimeUnit$fNumTimeInterval$fNFDataTimeInterval$fBinaryTimeInterval $fNumDelay $fNFDataDelay $fBinaryDelay$fBinaryTimeoutNotification$fGenericDelay $fEqDelay $fShowDelay$fGenericTimeInterval$fEqTimeInterval$fShowTimeInterval$fGenericTimeUnit $fEqTimeUnit$fShowTimeUnitsendnsend sendToAddrsendChan wrapMessageTickTimerRefsleepsleepFor sendAfterrunAfter exitAfter killAfter startTimer periodically resetTimer cancelTimer flushTimerticker$fNFDataTimerConfig$fBinaryTimerConfig $fNFDataTick $fBinaryTick$fNFDataSleepingPill$fBinarySleepingPill$fGenericSleepingPill$fEqSleepingPill$fShowSleepingPill $fGenericTick$fEqTick $fShowTick$fGenericTimerConfig$fEqTimerConfig$fShowTimerConfigLogger logMessageToLogtoLog LogClientLogTextLogChan LogFormatLogLevelDebugInfoNoticeWarningErrorCriticalAlert EmergencymxLogId logChannelreportclientdebuginfonoticewarningerrorcriticalalert emergencysendLog addFormatter systemLogFile systemLog$fNFDataLogLevel$fBinaryLogLevel$fNFDataSetLevel$fBinarySetLevel$fBinaryAddFormatter$fNFDataLogMessage$fBinaryLogMessage$fRoutableLogChan$fRoutableLogClient$fResolvableLogClient$fToLogMessage $fToLogList$fLoggerLogChan$fLoggerLogClient$fGenericLogMessage$fShowLogMessage$fGenericAddFormatter$fNFDataAddFormatter$fGenericSetLevel$fGenericLogLevel $fEqLogLevel$fReadLogLevel$fShowLogLevel $fOrdLogLevel$fEnumLogLevelNodeDownNodeUpnodeMonitorAgentId monitorNodesunmonitorNodes nodeMonitor$fNFDataRegister$fBinaryRegister$fNFDataUnRegister$fBinaryUnRegister$fNFDataNodeUp$fBinaryNodeUp$fNFDataNodeDown$fBinaryNodeDown$fGenericNodeDown$fShowNodeDown$fGenericNodeUp $fShowNodeUp$fGenericUnRegister$fGenericRegister callTimeoutcallAt multicall callResponsecallResponseDeferIfcallResponseDefer callForwardcallResponseAsynccallResponseIf$fBinaryMulticall$fBinaryMulticallResponse$fEqMulticallResponseTypeacquirerelease0distributed-process-0.7.7-1nAwuDoilq71l50YjBapm4*Control.Distributed.Process.Internal.Types ProcessId/Control.Distributed.Process.Internal.Primitiveskillexitwhereis*Control.Distributed.Process.Internal.Spawn spawnLinkspawnlinkProcessLinkException registerSelfmatchIfbase GHC.MaybeNothing time-1.12.2(Data.Time.Clock.Internal.NominalDiffTimeNominalDiffTime TimerConfig receiveWait