convert Watcher thread to Assistant monad
This is a nice win; much less code runs in Annex, so other threads have more chances to run concurrently. I do notice that renaming a file has gone from 1 to 2 commits. I think this is due to the above improvement letting the committer run more frequently, so it commits the rm first.
This commit is contained in:
parent
4dbdc2b666
commit
bad88e404a
4 changed files with 89 additions and 88 deletions
|
@ -8,7 +8,6 @@
|
|||
module Assistant.Changes where
|
||||
|
||||
import Common.Annex
|
||||
import qualified Annex.Queue
|
||||
import Types.KeySource
|
||||
import Utility.TSet
|
||||
|
||||
|
@ -39,19 +38,15 @@ newChangeChan :: IO ChangeChan
|
|||
newChangeChan = newTSet
|
||||
|
||||
{- Handlers call this when they made a change that needs to get committed. -}
|
||||
madeChange :: FilePath -> ChangeType -> Annex (Maybe Change)
|
||||
madeChange f t = do
|
||||
-- Just in case the commit thread is not flushing the queue fast enough.
|
||||
Annex.Queue.flushWhenFull
|
||||
liftIO $ Just <$> (Change <$> getCurrentTime <*> pure f <*> pure t)
|
||||
madeChange :: FilePath -> ChangeType -> IO (Maybe Change)
|
||||
madeChange f t = Just <$> (Change <$> getCurrentTime <*> pure f <*> pure t)
|
||||
|
||||
noChange :: Annex (Maybe Change)
|
||||
noChange :: IO (Maybe Change)
|
||||
noChange = return Nothing
|
||||
|
||||
{- Indicates an add needs to be done, but has not started yet. -}
|
||||
pendingAddChange :: FilePath -> Annex (Maybe Change)
|
||||
pendingAddChange f =
|
||||
liftIO $ Just <$> (PendingAddChange <$> getCurrentTime <*> pure f)
|
||||
pendingAddChange :: FilePath -> IO (Maybe Change)
|
||||
pendingAddChange f = Just <$> (PendingAddChange <$> getCurrentTime <*> pure f)
|
||||
|
||||
isPendingAddChange :: Change -> Bool
|
||||
isPendingAddChange (PendingAddChange {}) = True
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue