fswatch-0.1.0.1: src/System/FSWatch/Repr.hs
module System.FSWatch.Repr where
import Control.Concurrent
import System.FSNotify
import System.IO
import System.Process
data WatchProcess = WatchProcess
{ wPath :: String
, wProcessHandle :: ProcessHandle
, wStdin :: Handle
, wStdout :: Handle
, wNotifyMVar :: MVar [PE]
, wShutdown :: IO ()
}
type Listener = PE -> IO ()
data Opts = Opts
{ oSlave :: Bool
, oFixBufferMode :: Int
, oDelayedBufferMode :: Int
}
data State = State
{ prompt :: MVar String
, printFormat :: MVar PrintFormat
, buffering :: MVar NotifyBuffering
, mode :: MVar Mode
}
data DBE = DBE
{ wman :: WatchManager
, wfn :: String
}
type DB = [DBE]
type P = (IO (), Chan PE)
data PE
= Mod String
| Add String
| Rem String
| Prt { fromPrt :: String }
deriving (Eq, Show, Read)
isPrt :: PE -> Bool
isPrt (Prt _) = True
isPrt _ = False
data PrintFormat
= MultiRecord
| SingleRecord
deriving (Eq, Show)
data Mode
= CLI
| SLAVE
deriving (Eq, Show)
data NotifyBuffering
= NoNotifyBuffer
| FixTimeBuffer Int
| DelayedBuffer Int
deriving (Eq, Show)