ThreadObjects-0.0: Mutable objects that reside in their own threads.

Safe HaskellSafe-Inferred
LanguageHaskell98

Control.Concurrent.ThreadObject

Documentation

data ThreadObject a signal Source

Constructors

ThreadObject 

Fields

tickerMVar :: MVar (ActionType a signal)
 

data ActionType a signal Source

Constructors

IOAction (a -> IO a) (Maybe signal) 
PureAction (a -> a) (Maybe signal) 
SetSyncOnGet (a -> IO a) 
SetSyncOnPut (a -> Maybe signal -> IO ()) 
GetObjectValueIO (a -> IO ()) 
FreeObject (MVar Bool) 

data SeedOrSyncOnGet a Source

Constructors

SeedInitially a 
SyncOnGet (a -> IO a) a 

objectInit :: Exception exception => ThreadObject a signal -> InitialThreadState a signal -> (a -> Maybe signal -> IO ()) -> (a -> exception -> IO a) -> IO () Source

loopObjectSyncOnPutPhase :: Exception exception => ThreadObject a signal -> (a -> IO a) -> (a -> Maybe signal -> IO ()) -> a -> a -> Maybe signal -> (a -> exception -> IO a) -> IO () Source

loopObject :: Exception exception => ThreadObject a signal -> (a -> IO a) -> (a -> Maybe signal -> IO ()) -> a -> (a -> exception -> IO a) -> IO () Source

update :: ThreadObject a signal -> (a -> a) -> IO () Source

updateBlock :: ThreadObject a signal -> (a -> a) -> IO () Source

updateWithSignal :: ThreadObject a signal -> (a -> a) -> signal -> IO () Source

updateWithSignal' :: ThreadObject a signal -> (a -> a) -> Maybe signal -> IO () Source

updateReturning :: ThreadObject a signal -> (a -> (a, b)) -> IO b Source

updateIOReturning :: ThreadObject a signal -> (a -> IO (a, b)) -> IO b Source

updateIOReturningInThisThread :: ThreadObject a signal -> (a -> IO (a, b)) -> IO b Source

updateMulti :: ThreadObject a signalA -> (a -> IO a) -> IO () Source

updateMultiWithSignal :: ThreadObject a signalA -> signalA -> (a -> IO a) -> IO () Source

alsoUpdate :: ThreadObject a signal -> (t -> a -> IO (a, b)) -> t -> IO b Source

finallyUpdate :: ThreadObject a signal -> (t -> a -> (a, b)) -> t -> IO b Source

updateHelper :: a -> b -> MVar a -> (a -> b -> IO (a, b)) -> IO b Source

updateWith :: ThreadObject a signalA -> ThreadObject b signalB -> (a -> b -> b) -> IO () Source

updateWith2 :: ThreadObject a signalA -> ThreadObject b signalB -> ThreadObject c signalC -> (a -> b -> c -> c) -> IO () Source

updateIO :: ThreadObject a signalA -> (a -> IO a) -> IO () Source

updateIONoBlock :: ThreadObject a singalA -> (a -> IO a) -> IO () Source

updateIONoBlockWithSignal :: ThreadObject a signalA -> (a -> IO a) -> signalA -> IO () Source

updateIONoBlockWithSignal' :: ThreadObject a signalA -> (a -> IO a) -> Maybe signalA -> IO () Source

setSyncOnGet :: ThreadObject a signalA -> (a -> IO a) -> IO () Source

setSyncOnPut :: ThreadObject a signalA -> (a -> Maybe signalA -> IO ()) -> IO () Source

noSyncOnPut :: a -> Maybe signalA -> IO () Source

freeObject :: ThreadObject a signalA -> IO () Source