fix build with webapp disabled

Broken by recent thread manager and restarting improvements.
This commit is contained in:
Joey Hess 2013-02-06 15:38:41 -04:00
parent b1de99c1d4
commit 937cf81873
2 changed files with 31 additions and 17 deletions

View file

@ -196,8 +196,10 @@ startDaemon assistant foreground startbrowser = do
#ifdef WITH_WEBAPP
d <- getAssistant id
urlrenderer <- liftIO newUrlRenderer
mapM_ (startthread $ Just urlrenderer)
#else
mapM_ (startthread Nothing)
#endif
mapM_ (startthread urlrenderer)
[ watch $ commitThread
#ifdef WITH_WEBAPP
, assist $ webAppThread d urlrenderer False Nothing webappwaiter
@ -230,5 +232,5 @@ startDaemon assistant foreground startbrowser = do
watch a = (True, a)
assist a = (False, a)
startthread urlrenderer (watcher, t)
| watcher || assistant = startNamedThread (Just urlrenderer) t
| watcher || assistant = startNamedThread urlrenderer t
| otherwise = noop

View file

@ -5,6 +5,8 @@
- Licensed under the GNU GPL version 3 or higher.
-}
{-# LANGUAGE CPP #-}
module Assistant.NamedThread where
import Common.Annex
@ -12,23 +14,31 @@ import Assistant.Types.NamedThread
import Assistant.Types.ThreadName
import Assistant.Types.DaemonStatus
import Assistant.DaemonStatus
import Assistant.Alert
import Assistant.Monad
import Assistant.WebApp
import Assistant.WebApp.Types
import Control.Concurrent
import Control.Concurrent.Async
import qualified Data.Map as M
import qualified Data.Text as T
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.
-
- Named threads are run by a management thread, so if they crash
- an alert is displayed, allowing the thread to be restarted. -}
#ifdef WITH_WEBAPP
startNamedThread :: Maybe UrlRenderer -> NamedThread -> Assistant ()
startNamedThread urlrenderer namedthread@(NamedThread name a) = do
#else
startNamedThread :: Maybe Bool -> NamedThread -> Assistant ()
startNamedThread urlrenderer namedthread@(NamedThread name a) = do
#endif
m <- startedThreads <$> getDaemonStatus
case M.lookup name m of
Nothing -> start
@ -58,20 +68,22 @@ startNamedThread urlrenderer namedthread@(NamedThread name a) = do
, "crashed:", show e
]
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 $
addAlert $ (warningAlert (fromThreadName name) msg)
{ alertButton = button }
mkbutton = 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
}
#endif
namedThreadId :: NamedThread -> Assistant (Maybe ThreadId)
namedThreadId (NamedThread name _) = do