diff options
Diffstat (limited to 'src/Storage')
| -rw-r--r-- | src/Storage/Internal.hs | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/src/Storage/Internal.hs b/src/Storage/Internal.hs index 1f093b0..04fdf0d 100644 --- a/src/Storage/Internal.hs +++ b/src/Storage/Internal.hs @@ -193,6 +193,16 @@ instance StorageCompleteness Partial where      returnLoadResult = id      ioLoadBytes (Ref st dgst) = maybe (Left dgst) Right <$> ioLoadBytesFromStorage st dgst +unsafeStoreRawBytes :: Storage' c -> BL.ByteString -> IO (Ref' c) +unsafeStoreRawBytes st raw = do +    let dgst = hashToRefDigest raw +    case stBacking st of +         StorageDir { dirPath = sdir } -> writeFileOnce (refPath sdir dgst) $ compress raw +         StorageMemory { memObjs = tobjs } -> +             dgst `deepseq` -- the TVar may be accessed when evaluating the data to be written +                 modifyMVar_ tobjs (return . M.insert dgst raw) +    return $ Ref st dgst +  ioLoadBytesFromStorage :: Storage' c -> RefDigest -> IO (Maybe BL.ByteString)  ioLoadBytesFromStorage st dgst = loadCurrent st >>=      \case Just bytes -> return $ Just bytes |