move meteredWriteFileChunks out of legacy

This commit is contained in:
Joey Hess 2014-07-24 16:42:35 -04:00
parent e2c44bf656
commit ceea04e77f
4 changed files with 20 additions and 14 deletions

View file

@ -222,7 +222,7 @@ retrieve :: FilePath -> ChunkConfig -> Key -> AssociatedFile -> FilePath -> Mete
retrieve d chunkconfig k _ f p = metered (Just p) k $ \meterupdate ->
liftIO $ withStoredFiles chunkconfig d k $ \files ->
catchBoolIO $ do
Legacy.meteredWriteFileChunks meterupdate f files L.readFile
meteredWriteFileChunks meterupdate f files L.readFile
return True
retrieveEncrypted :: FilePath -> ChunkConfig -> (Cipher, Key) -> Key -> FilePath -> MeterUpdate -> Annex Bool

View file

@ -5,14 +5,21 @@
- Licensed under the GNU GPL version 3 or higher.
-}
module Remote.Helper.Chunked where
module Remote.Helper.Chunked
( ChunkSize
, ChunkConfig(..)
, chunkConfig
, meteredWriteFileChunks
) where
import Common.Annex
import Utility.DataUnits
import Types.Remote
import Logs.Chunk.Pure (ChunkSize)
import Utility.Metered
import qualified Data.ByteString.Lazy as L
import qualified Data.Map as M
import Data.Int
data ChunkConfig
= NoChunks
@ -30,3 +37,11 @@ chunkConfig m =
readsz v f = case readSize dataUnits v of
Just size | size > 0 -> fromInteger size
_ -> error ("bad " ++ f)
{- Writes a series of chunks to a file. The feeder is called to get
- each chunk. -}
meteredWriteFileChunks :: MeterUpdate -> FilePath -> [v] -> (v -> IO L.ByteString) -> IO ()
meteredWriteFileChunks meterupdate dest chunks feeder =
withBinaryFile dest WriteMode $ \h ->
forM_ chunks $
meteredWrite meterupdate h <=< feeder

View file

@ -8,8 +8,7 @@
module Remote.Helper.Chunked.Legacy where
import Common.Annex
import Utility.Metered
import Remote.Helper.Chunked (ChunkSize)
import Remote.Helper.Chunked
import qualified Data.ByteString.Lazy as L
import qualified Control.Exception as E
@ -115,11 +114,3 @@ storeChunked chunksize dests storer content = either onerr return
let (chunk, b') = L.splitAt sz b
storer d chunk
storechunks sz (d:useddests) ds b'
{- Writes a series of chunks to a file. The feeder is called to get
- each chunk. -}
meteredWriteFileChunks :: MeterUpdate -> FilePath -> [v] -> (v -> IO L.ByteString) -> IO ()
meteredWriteFileChunks meterupdate dest chunks feeder =
withBinaryFile dest WriteMode $ \h ->
forM_ chunks $
meteredWrite meterupdate h <=< feeder

View file

@ -140,7 +140,7 @@ retrieve :: Remote -> Key -> AssociatedFile -> FilePath -> MeterUpdate -> Annex
retrieve r k _f d p = metered (Just p) k $ \meterupdate ->
davAction r False $ \(baseurl, user, pass) -> liftIO $ catchBoolIO $
withStoredFiles r k baseurl user pass onerr $ \urls -> do
Legacy.meteredWriteFileChunks meterupdate d urls $ \url -> do
meteredWriteFileChunks meterupdate d urls $ \url -> do
mb <- getDAV url user pass
case mb of
Nothing -> throwIO "download failed"