- data TChanB a = TChanB {
- tcbChanL :: TChanL a
- tcbCapacity :: TVar ChanCapacity
- chanCapacity :: TChanB a -> STM ChanCapacity
- changeChanCapacity :: ChanCapacity -> TChanB a -> STM ()
- chanLoad :: TChanB a -> STM ChanCapacity
- newTChanB :: ChanCapacity -> STM (TChanB a)
- newTChanB_IO :: ChanCapacity -> IO (TChanB a)
- elasticWriteTChanB :: PermitToBlock -> TChanB a -> a -> STM WriteSucceeded
- writeTChanB :: TChanB a -> a -> STM ()
- readTChanB :: TChanB a -> STM a
- isEmptyTChanB :: TChanB a -> STM Bool
- freeSpaceInTChanB :: TChanB a -> STM ChanContentAmountMeasure
- tryReadTChanB :: TChanB a -> STM (Maybe a)
- tryWriteTChanB :: TChanB a -> a -> STM Bool
- getTChanBContents :: TChanB a -> STM [a]
- elacticWriteList2TChanB :: PermitToBlock -> TChanB a -> [a] -> STM [a]
- filterOutTChanBElements :: (a -> TakeElementOutShouldWe) -> TChanB a -> STM [a]
- viewChanBContent :: TChanB a -> STM [a]
Documentation
TChanB | |
|
chanCapacity :: TChanB a -> STM ChanCapacitySource
changeChanCapacity :: ChanCapacity -> TChanB a -> STM ()Source
chanLoad :: TChanB a -> STM ChanCapacitySource
newTChanB :: ChanCapacity -> STM (TChanB a)Source
newTChanB_IO :: ChanCapacity -> IO (TChanB a)Source
elasticWriteTChanB :: PermitToBlock -> TChanB a -> a -> STM WriteSucceededSource
The "elastic-" prefix stands for the opportunity to regulate
with option PermitToBlock
writeTChanB :: TChanB a -> a -> STM ()Source
Wrapper around elasticWriteTChanB
:
writeTChanB tchb a = return () << elasticWriteTChanB True tchb a
readTChanB :: TChanB a -> STM aSource
isEmptyTChanB :: TChanB a -> STM BoolSource
freeSpaceInTChanB :: TChanB a -> STM ChanContentAmountMeasureSource
freeSpace =chanCapacity
-chanLoad
tryReadTChanB :: TChanB a -> STM (Maybe a)Source
tryWriteTChanB :: TChanB a -> a -> STM BoolSource
Wrapper around elasticWriteTChanB
:
tryWriteTChanB = elasticWriteTChanB False
getTChanBContents :: TChanB a -> STM [a]Source
Take everything from channel, and leave it empty.
elacticWriteList2TChanB :: PermitToBlock -> TChanB a -> [a] -> STM [a]Source
This procedure is highly uneffective and is dangerous,
when
is on.
Since it won't complete unless there is enough free space in the channnel.
Even the part of input that fits won't commit to get into the channel.
If capacity isn't enough, it won't ever commit,
unless the capacity is made bigger.
PermitToBlock
filterOutTChanBElements :: (a -> TakeElementOutShouldWe) -> TChanB a -> STM [a]Source
Just filter out elements. Is abstracted over implementation, so doesn't suffer from possible inconsistency between capacity and load (when capacity < load).
viewChanBContent :: TChanB a -> STM [a]Source