Hackage.Security.Client.Repository.Cache

hackage-security-0.5.3.0: Hackage security library

Safe Haskell | None
Language | Haskell2010

Hackage.Security.Client.Repository.Cache

Description

The files we cache from the repository

Both the Local and the Remote repositories make use of this module.

Synopsis

- data Cache = Cache {
  - cacheRoot :: Path Absolute
  - cacheLayout :: CacheLayout
  }
- getCached :: Cache -> CachedFile -> IO (Maybe (Path Absolute))
- getCachedRoot :: Cache -> IO (Path Absolute)
- getCachedIndex :: Cache -> Format f -> IO (Maybe (Path Absolute))
- clearCache :: Cache -> IO ()
- withIndex :: Cache -> (Handle -> IO a) -> IO a
- getIndexIdx :: Cache -> IO TarIndex
- cacheRemoteFile :: forall down typ f. DownloadedFile down => Cache -> down typ -> Format f -> IsCached typ -> IO ()
- lockCache :: Cache -> IO () -> IO ()

# Documentation

data Cache #

Location and layout of the local cache

Constructors

Cache |
Fields cacheRoot :: Path Absolute cacheLayout :: CacheLayout

getCached :: Cache -> CachedFile -> IO (Maybe (Path Absolute)) #

Get a cached file (if available)

getCachedRoot :: Cache -> IO (Path Absolute) #

Get the cached root

Calling `getCachedRoot` without root info available is a programmer error and will result in an unchecked exception. See `requiresBootstrap`.

getCachedIndex :: Cache -> Format f -> IO (Maybe (Path Absolute)) #

Get the cached index (if available)

clearCache :: Cache -> IO () #

Delete a previously downloaded remote file

withIndex :: Cache -> (Handle -> IO a) -> IO a #

getIndexIdx :: Cache -> IO TarIndex #

cacheRemoteFile :: forall down typ f. DownloadedFile down => Cache -> down typ -> Format f -> IsCached typ -> IO () #

Cache a previously downloaded remote file

lockCache :: Cache -> IO () -> IO () #

Lock the cache

This avoids two concurrent processes updating the cache at the same time, provided they both take the lock.