fix build with webapp disabled
Broken by recent thread manager and restarting improvements.
This commit is contained in:
parent
b1de99c1d4
commit
937cf81873
2 changed files with 31 additions and 17 deletions
|
@ -196,8 +196,10 @@ startDaemon assistant foreground startbrowser = do
|
||||||
#ifdef WITH_WEBAPP
|
#ifdef WITH_WEBAPP
|
||||||
d <- getAssistant id
|
d <- getAssistant id
|
||||||
urlrenderer <- liftIO newUrlRenderer
|
urlrenderer <- liftIO newUrlRenderer
|
||||||
|
mapM_ (startthread $ Just urlrenderer)
|
||||||
|
#else
|
||||||
|
mapM_ (startthread Nothing)
|
||||||
#endif
|
#endif
|
||||||
mapM_ (startthread urlrenderer)
|
|
||||||
[ watch $ commitThread
|
[ watch $ commitThread
|
||||||
#ifdef WITH_WEBAPP
|
#ifdef WITH_WEBAPP
|
||||||
, assist $ webAppThread d urlrenderer False Nothing webappwaiter
|
, assist $ webAppThread d urlrenderer False Nothing webappwaiter
|
||||||
|
@ -230,5 +232,5 @@ startDaemon assistant foreground startbrowser = do
|
||||||
watch a = (True, a)
|
watch a = (True, a)
|
||||||
assist a = (False, a)
|
assist a = (False, a)
|
||||||
startthread urlrenderer (watcher, t)
|
startthread urlrenderer (watcher, t)
|
||||||
| watcher || assistant = startNamedThread (Just urlrenderer) t
|
| watcher || assistant = startNamedThread urlrenderer t
|
||||||
| otherwise = noop
|
| otherwise = noop
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
- Licensed under the GNU GPL version 3 or higher.
|
- Licensed under the GNU GPL version 3 or higher.
|
||||||
-}
|
-}
|
||||||
|
|
||||||
|
{-# LANGUAGE CPP #-}
|
||||||
|
|
||||||
module Assistant.NamedThread where
|
module Assistant.NamedThread where
|
||||||
|
|
||||||
import Common.Annex
|
import Common.Annex
|
||||||
|
@ -12,23 +14,31 @@ import Assistant.Types.NamedThread
|
||||||
import Assistant.Types.ThreadName
|
import Assistant.Types.ThreadName
|
||||||
import Assistant.Types.DaemonStatus
|
import Assistant.Types.DaemonStatus
|
||||||
import Assistant.DaemonStatus
|
import Assistant.DaemonStatus
|
||||||
import Assistant.Alert
|
|
||||||
import Assistant.Monad
|
import Assistant.Monad
|
||||||
import Assistant.WebApp
|
|
||||||
import Assistant.WebApp.Types
|
|
||||||
|
|
||||||
import Control.Concurrent
|
import Control.Concurrent
|
||||||
import Control.Concurrent.Async
|
import Control.Concurrent.Async
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
import qualified Data.Text as T
|
|
||||||
import qualified Control.Exception as E
|
import qualified Control.Exception as E
|
||||||
|
|
||||||
|
#ifdef WITH_WEBAPP
|
||||||
|
import Assistant.WebApp
|
||||||
|
import Assistant.WebApp.Types
|
||||||
|
import Assistant.Alert
|
||||||
|
import qualified Data.Text as T
|
||||||
|
#endif
|
||||||
|
|
||||||
{- Starts a named thread, if it's not already running.
|
{- Starts a named thread, if it's not already running.
|
||||||
-
|
-
|
||||||
- Named threads are run by a management thread, so if they crash
|
- Named threads are run by a management thread, so if they crash
|
||||||
- an alert is displayed, allowing the thread to be restarted. -}
|
- an alert is displayed, allowing the thread to be restarted. -}
|
||||||
|
#ifdef WITH_WEBAPP
|
||||||
startNamedThread :: Maybe UrlRenderer -> NamedThread -> Assistant ()
|
startNamedThread :: Maybe UrlRenderer -> NamedThread -> Assistant ()
|
||||||
startNamedThread urlrenderer namedthread@(NamedThread name a) = do
|
startNamedThread urlrenderer namedthread@(NamedThread name a) = do
|
||||||
|
#else
|
||||||
|
startNamedThread :: Maybe Bool -> NamedThread -> Assistant ()
|
||||||
|
startNamedThread urlrenderer namedthread@(NamedThread name a) = do
|
||||||
|
#endif
|
||||||
m <- startedThreads <$> getDaemonStatus
|
m <- startedThreads <$> getDaemonStatus
|
||||||
case M.lookup name m of
|
case M.lookup name m of
|
||||||
Nothing -> start
|
Nothing -> start
|
||||||
|
@ -58,20 +68,22 @@ startNamedThread urlrenderer namedthread@(NamedThread name a) = do
|
||||||
, "crashed:", show e
|
, "crashed:", show e
|
||||||
]
|
]
|
||||||
hPutStrLn stderr msg
|
hPutStrLn stderr msg
|
||||||
button <- runAssistant d mkbutton
|
#ifdef WITH_WEBAPP
|
||||||
|
button <- runAssistant d $
|
||||||
|
case urlrenderer of
|
||||||
|
Nothing -> return Nothing
|
||||||
|
Just renderer -> do
|
||||||
|
close <- asIO1 removeAlert
|
||||||
|
url <- liftIO $ renderUrl renderer (RestartThreadR name) []
|
||||||
|
return $ Just $ AlertButton
|
||||||
|
{ buttonLabel = T.pack "Restart Thread"
|
||||||
|
, buttonUrl = url
|
||||||
|
, buttonAction = Just close
|
||||||
|
}
|
||||||
runAssistant d $ void $
|
runAssistant d $ void $
|
||||||
addAlert $ (warningAlert (fromThreadName name) msg)
|
addAlert $ (warningAlert (fromThreadName name) msg)
|
||||||
{ alertButton = button }
|
{ alertButton = button }
|
||||||
mkbutton = case urlrenderer of
|
#endif
|
||||||
Nothing -> return Nothing
|
|
||||||
Just renderer -> do
|
|
||||||
close <- asIO1 removeAlert
|
|
||||||
url <- liftIO $ renderUrl renderer (RestartThreadR name) []
|
|
||||||
return $ Just $ AlertButton
|
|
||||||
{ buttonLabel = T.pack "Restart Thread"
|
|
||||||
, buttonUrl = url
|
|
||||||
, buttonAction = Just close
|
|
||||||
}
|
|
||||||
|
|
||||||
namedThreadId :: NamedThread -> Assistant (Maybe ThreadId)
|
namedThreadId :: NamedThread -> Assistant (Maybe ThreadId)
|
||||||
namedThreadId (NamedThread name _) = do
|
namedThreadId (NamedThread name _) = do
|
||||||
|
|
Loading…
Reference in a new issue