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.0the child specification was successfully removed%the child specification was not found1the child was not removed, as it was not stopped.BProvides failure information when (re-)start failure is indicated.a child with this G already exists#the child is already up and runninga closure cannot be resolved-a child died (almost) immediately on starting0Static 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.:*a permanent child will always be restarted;a temporary child will never be restarted<DA transient child will be restarted only if it terminates abnormally=as <E, but if the child exits normally, the supervisor also exits normally>?Specifies whether the child is another supervisor, or a worker.A*A reference to a (possibly running) child.B,a reference to the (currently running) childC%also a currently running child, with extra child infoDa reference to the old" (previous) child (now restarting)E,indicates the child is not currently runningF"a non-temporary child exited with &G#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 only the failed child processKalso restart all siblingsM$restart prior siblings (i.e., prior  start order)N.restart subsequent siblings (i.e., subsequent  start order)S/stop then start each child sequentially, i.e., foldlM stopThenStart children U8stop all children first, then restart them sequentially V@stop all children in the given order, but start them in reverse 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  !"#$%&'()*+,-./01234z56789:;<=>?@ABCDEFGH IKMNJJLJLJLOPQRSUVTTTWXYZ[\]^{|_`abcdefghij}~(c) Tim Watson 2012 - 2013BSD3 (see the file LICENSE)%Tim Watson <watson.timothy@gmail.com> experimental#non-portable (requires concurrency)None +035;GNk"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>?@678/0123459:;<=ABCDEFija`_klmn^bZ[\]cdRSUVTTTWXYHIKMNJJLJLJLOPQefghr  stvuwxypq !"#o$%&t klmnopqrstuvwxy      !"#$%&'(      !"#$%&&'(()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     distr_1xSMZAQQqoTGyJgV5pnKAW&Control.Distributed.Process.Supervisor,Control.Distributed.Process.Supervisor.TypesTerminateChildResultTerminateChildOkTerminateChildUnknownIdRestartChildResultChildRestartOkChildRestartFailedChildRestartUnknownIdChildRestartIgnoredStartChildResult ChildStartOkChildStartFailedChildStartUnknownIdChildStartInitIgnoredAddChildResult ChildAddedChildFailedToStartChildDeleteChildResult ChildDeleted ChildNotFoundChildNotStopped StartFailureStartFailureDuplicateChildStartFailureAlreadyRunningStartFailureBadClosureStartFailureDied StaticLabelSupervisorStats _children _supervisors_workers_running_activeSupervisors_activeWorkers totalRestartsChildInitFailureChildInitIgnore ChildSpecchildKey childType childRestart childStop childStart childRegName ChildStart RunClosure CreateHandleStarterProcessRegisteredName LocalNameCustomRegisterChildTerminationPolicyTerminateTimeoutTerminateImmediately RestartPolicy Permanent Temporary Transient Intrinsic ChildTypeWorker SupervisorChildRef ChildRunningChildRunningExtraChildRestarting ChildStoppedChildStartIgnoredChildKeyRestartStrategy RestartOne intensity RestartAllmode RestartLeft RestartRight ShutdownModeSequentialShutdownParallelShutdown RestartMode RestartEachorderRestartInOrderRestartRevOrder RestartOrder LeftToRight RightToLeft 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_loggershutdownStrategyLogSink LogProcessLogChan StatsTypeActive SpecifiedSuffixPrefix ChildSpecsIgnoreChildReqTerminateChildReqRestartChildReq StartChildReq StartChild AddChildResExistsAdded 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