qbz      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy(c) Tim Watson 2012BSD3 (see the file LICENSE)%Tim Watson <watson.timothy@gmail.com> experimental#non-portable (requires concurrency)None+0&The result of a call to  removeChild.1the child was not removed, as it was not stopped.%the child specification was not found0the child specification was successfully removedBProvides failure information when (re-)start failure is indicated.-a child died (almost) immediately on startinga closure cannot be resolved#the child is already up and runninga child with this G already exists0Static labels (in the remote table) are strings.'RSpecification for a child process. The child must be uniquely identified by it's childKeyO within the supervisor. The supervisor will start the child itself, therefore childRuny should contain the child process' implementation e.g., if the child is a long running server, this would be the server loop, as with e.g., ManagedProces.start.9>Describes when a terminated child process should be restarted.:as ;E, but if the child exits normally, the supervisor also exits normally;DA transient child will be restarted only if it terminates abnormally<a temporary child will never be restarted=*a permanent child will always be restarted>?Specifies whether the child is another supervisor, or a worker.A*A reference to a (possibly running) child.B"a non-temporary child exited with %C,indicates the child is not currently runningDa reference to the old" (previous) child (now restarting)E%also a currently running child, with extra child infoF,a reference to the (currently running) childG#Identifies a child process by name.HStrategy used by a supervisor to handle child restarts, whether due to unexpected child failure or explicit restart requests from a client.QSome terminology: We refer to child processes managed by the same supervisor as siblings'. When restarting a child process, the  RestartNoneK policy indicates that sibling processes should be left alone, whilst the K policy will cause allA children to be restarted (in the same order they were started).*The other two restart strategies refer to prior and  subsequent" siblings, which describe's those children's configured position (i.e., insertion order). These latter modes allow one to control the order in which siblings are restarted, and to exclude some siblings from the restart without having to resort to grouping them using a child supervisor.I.restart subsequent siblings (i.e., subsequent  start order)J$restart prior siblings (i.e., prior  start order)Kalso restart all siblingsM%restart only the failed child processS@stop all children in the given order, but start them in reverse T8stop all children first, then restart them sequentially U/stop then start each child sequentially, i.e., foldlM stopThenStart children ZA compulsary limit on the number of restarts that a supervisor will tolerate before it terminates all child processes and then itself. If >  MaxRestarts occur within the specified  TimeInterval, termination will occur. This prevents the supervisor from entering an infinite loop of child process terminations and restarts.bSmart constructor for  MaxRestarts8. The maximum restart count must be a positive integer.eProvides a default H for  RestartOne*. > restartOne = RestartOne defaultLimitsfProvides a default H for  RestartAllD. > restartOne = RestartAll defaultLimits (RestartEach LeftToRight)gProvides a default H for  RestartLeftE. > restartOne = RestartLeft defaultLimits (RestartEach LeftToRight)hProvides a default H for  RestartRightF. > restartOne = RestartRight defaultLimits (RestartEach LeftToRight)  !"#$%&'()*+,-./01234z56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^{|_`abcdefghij}~n  !"#$%&'()*+,-./01234z56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^{|_`abcdefghijQ  !"#$&%'()*+,-./21035z46879=<;:>@?AFEDCBGH MKJINNLNLNLOQPRUTSVVVWYXZ[\]^{|_`abcdefghij}~(c) Tim Watson 2012 - 2013BSD3 (see the file LICENSE)%Tim Watson <watson.timothy@gmail.com> experimental#non-portable (requires concurrency)None +024:FMk"A type that can be converted to a /.mRStart a supervisor (process), running the supplied children and restart strategy. start = spawnLocal . runn>Run the supplied children using the provided restart strategy.o-Obtain statistics about a running supervisor.p.Lookup a possibly supervised child, given its G.q*List all know (i.e., configured) children.rAdd a new child.s*Start an existing (configured) child. The ' must already be present (see r%), otherwise the operation will fail.tgAtomically add and start a new child spec. Will fail if a child with the given key is already present.uCDelete a supervised child. The child must already be stopped (see v).vTerminate a running child.w!Forcibly restart a running child.xGGracefully terminate a running supervisor. Returns immediately if the address cannot be resolved.yAs x, but waits until the supervisor process has exited, at which point the caller can be sure that all children have also stopped. Returns immediately if the address cannot be resolved.klmnopqrstuvwxy      !"#$%&'z  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy'()*+,-.G>@?687/2103549=<;:AFEDCBija`_klmn^bZ[\]cdRUTSVVVWYXHMKJINNLNLNLOQPefghr  stvuwxypq !"#o$&%t klmnopqrstuvwxy      !"#$%&'(      !"#$%&'&(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     $distributed-process-supervisor-0.1.2&Control.Distributed.Process.Supervisor,Control.Distributed.Process.Supervisor.TypesTerminateChildResultTerminateChildUnknownIdTerminateChildOkRestartChildResultChildRestartIgnoredChildRestartUnknownIdChildRestartFailedChildRestartOkStartChildResultChildStartInitIgnoredChildStartUnknownIdChildStartFailed ChildStartOkAddChildResultChildFailedToStart ChildAddedChildDeleteChildResultChildNotStopped ChildNotFound ChildDeleted StartFailureStartFailureDiedStartFailureBadClosureStartFailureAlreadyRunningStartFailureDuplicateChild StaticLabelSupervisorStats _children _supervisors_workers_running_activeSupervisors_activeWorkers totalRestartsChildInitFailureChildInitIgnore ChildSpecchildKey childType childRestart childStop childStart childRegName ChildStartStarterProcess CreateHandle RunClosureRegisteredNameCustomRegister LocalNameChildTerminationPolicyTerminateImmediatelyTerminateTimeout RestartPolicy Intrinsic Transient Temporary Permanent ChildType SupervisorWorkerChildRefChildStartIgnored ChildStoppedChildRestartingChildRunningExtra ChildRunningChildKeyRestartStrategy RestartRight RestartLeft RestartAllmode RestartOne intensity ShutdownModeParallelShutdownSequentialShutdown RestartModeRestartRevOrderRestartInOrder RestartEachorder RestartOrder RightToLeft LeftToRight RestartLimitmaxRmaxT MaxRestarts StarterPidChildPid SupervisorPid maxRestartslimit defaultLimits restartOne restartAll restartLeft restartRight isRunning isRestarting ToChildStart toChildStartstartrun statistics lookupChild listChildrenaddChild startChild startNewChild deleteChildterminateChild restartChildshutdownshutdownAndWait GlobalNameMaxRmaxNumberOfRestarts$fNFDataTerminateChildResult$fBinaryTerminateChildResult$fNFDataRestartChildResult$fBinaryRestartChildResult$fNFDataStartChildResult$fBinaryStartChildResult$fNFDataAddChildResult$fBinaryAddChildResult$fNFDataDeleteChildResult$fBinaryDeleteChildResult$fNFDataStartFailure$fBinaryStartFailure$fNFDataSupervisorStats$fBinarySupervisorStats$fExceptionChildInitFailure$fNFDataChildSpec$fBinaryChildSpec$fNFDataChildStart$fBinaryChildStart$fShowRegisteredName$fNFDataRegisteredName$fBinaryRegisteredName$fNFDataChildTerminationPolicy$fBinaryChildTerminationPolicy$fNFDataRestartPolicy$fBinaryRestartPolicy$fNFDataChildType$fBinaryChildType$fRoutableChildRef$fResolvableChildRef $fEqChildRef$fNFDataChildRef$fBinaryChildRef$fNFDataRestartStrategy$fBinaryRestartStrategy$fNFDataShutdownMode$fBinaryShutdownMode$fNFDataRestartMode$fBinaryRestartMode$fNFDataRestartOrder$fBinaryRestartOrder$fNFDataRestartLimit$fBinaryRestartLimit$fNFDataMaxRestarts$fBinaryMaxRestartsIgnoredState_specs_active _strategy_restartPeriod _restarts_stats_loggershutdownStrategyLogSinkLogChan LogProcess StatsType SpecifiedActiveSuffixPrefix ChildSpecsIgnoreChildReqTerminateChildReqRestartChildReq StartChildReq StartChild AddChildResAddedExists AddChildReqAddChildImmediateStartListReqStatsReqFindReq DeleteChild expectTriplesupInit initialised emptyState emptyStatsserverDefinitionprocessDefinitionhandleLookupChildhandleListChildrenhandleAddChild handleIgnorehandleDeleteChildhandleStartChildhandleStartNewChildhandleRestartChildhandleTerminateChildhandleGetStatshandleMonitorSignalhandleShutdown tryRestarttryRestartBranchtryRestartChilddoRestartChild addRestart doStartChild tryStartChildfilterInitFailuresterminateChildrendoTerminateChild childShutdownerrorMaxIntensityReached logShutdown logFailurelogEntrymkReportsetChildStopped doAddChild updateChild removeChild markActive decrement findChild bumpStatsbump isTemporary isTransient isIntrinsicactivestrategyrestartIntensity restartPeriodrestartsspecsstatsloggerchildrenworkersrunning supervisors activeWorkersactiveSupervisors$fLoggerLogSink$fNFDataIgnoreChildReq$fBinaryIgnoreChildReq$fNFDataTerminateChildReq$fBinaryTerminateChildReq$fNFDataRestartChildReq$fBinaryRestartChildReq$fNFDataStartChildReq$fBinaryStartChildReq$fNFDataAddChildReq$fBinaryAddChildReq$fNFDataListReq$fBinaryListReq$fNFDataStatsReq$fBinaryStatsReq$fNFDataFindReq$fBinaryFindReq$fNFDataDeleteChild$fBinaryDeleteChild$fToChildStart(->)$fToChildStartProcess$fToChildStartClosure$fToChildStartClosure0