From 77b84a56951b5b680b1c1afcfd199948b832fb2c Mon Sep 17 00:00:00 2001 From: Victor Denisov Date: Sat, 27 Jan 2018 11:46:53 -0800 Subject: [PATCH] Recover original indentation --- Database/MongoDB/GridFS.hs | 41 +++++++++++++++++++------------------- docker-compose.yml | 2 ++ 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/Database/MongoDB/GridFS.hs b/Database/MongoDB/GridFS.hs index 1d36c09..e4f70e3 100644 --- a/Database/MongoDB/GridFS.hs +++ b/Database/MongoDB/GridFS.hs @@ -46,7 +46,7 @@ defaultChunkSize :: Int64 -- ^ The default chunk size is 256 kB defaultChunkSize = 256 * 1024 --- magic constant for the +-- magic constant for md5Finalize md5BlockSizeInBytes :: Int md5BlockSizeInBytes = 64 @@ -159,26 +159,25 @@ finalizeMD5 ctx rest = -- Write as many chunks as can be written from the file writer writeChunks :: (Monad m, MonadIO m) => FileWriter -> L.ByteString -> Action m FileWriter -writeChunks (FileWriter chunkSize bucket files_id i size acc md5context md5acc) chunk = - do - -- Update md5 context - let md5BlockLength = fromIntegral $ untag (blockLength :: Tagged MD5Digest Int) - let md5acc_temp = (md5acc `L.append` chunk) - let (md5context', md5acc') = - if (L.length md5acc_temp < md5BlockLength) - then (md5context, md5acc_temp) - else let numBlocks = L.length md5acc_temp `div` md5BlockLength - (current, rest) = L.splitAt (md5BlockLength * numBlocks) md5acc_temp - in (md5Update md5context (L.toStrict current), rest) - -- Update chunks - let size' = (size + L.length chunk) - let acc_temp = (acc `L.append` chunk) - if (L.length acc_temp < chunkSize) - then return (FileWriter chunkSize bucket files_id i size' acc_temp md5context' md5acc') - else do - let (chunk, acc') = L.splitAt chunkSize acc_temp - putChunk bucket files_id i chunk - writeChunks (FileWriter chunkSize bucket files_id (i+1) size' acc' md5context' md5acc') L.empty +writeChunks (FileWriter chunkSize bucket files_id i size acc md5context md5acc) chunk = do + -- Update md5 context + let md5BlockLength = fromIntegral $ untag (blockLength :: Tagged MD5Digest Int) + let md5acc_temp = (md5acc `L.append` chunk) + let (md5context', md5acc') = + if (L.length md5acc_temp < md5BlockLength) + then (md5context, md5acc_temp) + else let numBlocks = L.length md5acc_temp `div` md5BlockLength + (current, rest) = L.splitAt (md5BlockLength * numBlocks) md5acc_temp + in (md5Update md5context (L.toStrict current), rest) + -- Update chunks + let size' = (size + L.length chunk) + let acc_temp = (acc `L.append` chunk) + if (L.length acc_temp < chunkSize) + then return (FileWriter chunkSize bucket files_id i size' acc_temp md5context' md5acc') + else do + let (chunk, acc') = L.splitAt chunkSize acc_temp + putChunk bucket files_id i chunk + writeChunks (FileWriter chunkSize bucket files_id (i+1) size' acc' md5context' md5acc') L.empty sinkFile :: (Monad m, MonadIO m) => Bucket -> Text -> Consumer S.ByteString (Action m) File -- ^ A consumer that creates a file in the bucket and puts all consumed data in it diff --git a/docker-compose.yml b/docker-compose.yml index 1f0dffd..4625f30 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,8 @@ version: '3' services: mongodb: + ports: + - 27017:27017 image: mongo:3.4.3 mongodb-haskell: image: phadej/ghc:8.0.2