it builds again
Currently nothing waits on transfer processes. (Second drive of the day fried. Not concentrating very well.)
This commit is contained in:
parent
8795a392c3
commit
430ad8ce85
3 changed files with 39 additions and 5 deletions
30
Assistant/TransferSlots.hs
Normal file
30
Assistant/TransferSlots.hs
Normal file
|
@ -0,0 +1,30 @@
|
|||
{- git-annex assistant transfer slots
|
||||
-
|
||||
- Copyright 2012 Joey Hess <joey@kitenet.net>
|
||||
-
|
||||
- Licensed under the GNU GPL version 3 or higher.
|
||||
-}
|
||||
|
||||
module Assistant.TransferSlots where
|
||||
|
||||
import Control.Exception
|
||||
import Control.Concurrent
|
||||
|
||||
type TransferSlots = QSemN
|
||||
|
||||
{- Number of concurrent transfers allowed to be run from the assistant.
|
||||
-
|
||||
- Transfers launched by other means, including by remote assistants,
|
||||
- do not currently take up slots.
|
||||
-}
|
||||
numSlots :: Int
|
||||
numSlots = 1
|
||||
|
||||
newTransferSlots :: IO TransferSlots
|
||||
newTransferSlots = newQSemN numSlots
|
||||
|
||||
{- Waits until a transfer slot becomes available, and runs a transfer
|
||||
- action in the slot.
|
||||
-}
|
||||
inTransferSlot :: TransferSlots -> IO a -> IO a
|
||||
inTransferSlot s = bracket_ (waitQSemN s 1) (signalQSemN s 1)
|
Loading…
Add table
Add a link
Reference in a new issue