----------------------------------------------------------------------------- -- | -- Module : Hoodle.Coroutine.Callback -- Copyright : (c) 2011, 2012 Ian-Woo Kim -- -- License : BSD3 -- Maintainer : Ian-Woo Kim -- Stability : experimental -- Portability : GHC -- ----------------------------------------------------------------------------- module Hoodle.Coroutine.Callback where import Control.Concurrent import Control.Exception -- import Data.Time -- import System.Directory -- import System.Environment -- import System.FilePath -- import System.Locale import System.IO import System.Exit -- import Control.Monad.Trans.Crtn.Driver import qualified Control.Monad.Trans.Crtn.EventHandler as E -- import Hoodle.Util -- import Prelude hiding (catch) eventHandler :: MVar (Maybe (Driver e IO ())) -> e -> IO () eventHandler evar ev = E.eventHandler evar ev `catch` allexceptionproc -- `catches` [Handler errorcall, Handler patternerr] allexceptionproc :: SomeException -> IO () allexceptionproc e = do errorlog (show e) exitFailure errorcall :: ErrorCall -> IO () errorcall e = errorlog (show e) patternerr :: PatternMatchFail -> IO () patternerr e = errorlog (show e)