{-# LANGUAGE MultiParamTypeClasses #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Haskell.Debug.Adapter.State.DebugRun.InternalTerminate where
import Control.Monad.IO.Class
import qualified System.Log.Logger as L
import Haskell.Debug.Adapter.Type
import Haskell.Debug.Adapter.Constant
import qualified Haskell.Debug.Adapter.Utility as U
import qualified Haskell.Debug.Adapter.State.Utility as SU
instance StateActivityIF DebugRunStateData HdaInternalTerminateRequest where
action :: AppState DebugRunStateData
-> Request HdaInternalTerminateRequest
-> AppContext (Maybe StateTransit)
action AppState DebugRunStateData
_ (InternalTerminateRequest HdaInternalTerminateRequest
req) = do
IO () -> StateT AppStores (ExceptT ErrMsg IO) ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> StateT AppStores (ExceptT ErrMsg IO) ())
-> IO () -> StateT AppStores (ExceptT ErrMsg IO) ()
forall a b. (a -> b) -> a -> b
$ ErrMsg -> ErrMsg -> IO ()
L.debugM ErrMsg
_LOG_APP (ErrMsg -> IO ()) -> ErrMsg -> IO ()
forall a b. (a -> b) -> a -> b
$ ErrMsg
"DebugRunState InternalTerminateRequest called. " ErrMsg -> ErrMsg -> ErrMsg
forall a. [a] -> [a] -> [a]
++ HdaInternalTerminateRequest -> ErrMsg
forall a. Show a => a -> ErrMsg
show HdaInternalTerminateRequest
req
HdaInternalTerminateRequest -> AppContext (Maybe StateTransit)
app HdaInternalTerminateRequest
req
app :: HdaInternalTerminateRequest -> AppContext (Maybe StateTransit)
app :: HdaInternalTerminateRequest -> AppContext (Maybe StateTransit)
app HdaInternalTerminateRequest
_ = do
StateT AppStores (ExceptT ErrMsg IO) ()
SU.terminateGHCi
StateT AppStores (ExceptT ErrMsg IO) ()
U.sendTerminatedEvent
StateT AppStores (ExceptT ErrMsg IO) ()
U.sendExitedEvent
Maybe StateTransit -> AppContext (Maybe StateTransit)
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe StateTransit -> AppContext (Maybe StateTransit))
-> Maybe StateTransit -> AppContext (Maybe StateTransit)
forall a b. (a -> b) -> a -> b
$ StateTransit -> Maybe StateTransit
forall a. a -> Maybe a
Just StateTransit
DebugRun_Shutdown