git-annex/Logs/RemoteState.hs
Joey Hess bfc9039ead
convert git-annex branch access to ByteStrings and Builders
Most of the individual logs are not converted yet, only presense logs
have an efficient ByteString Builder implemented so far. The rest
convert to and from String.
2019-01-03 13:21:48 -04:00

36 lines
887 B
Haskell

{- Remote state logs.
-
- Copyright 2014 Joey Hess <id@joeyh.name>
-
- Licensed under the GNU GPL version 3 or higher.
-}
module Logs.RemoteState (
getRemoteState,
setRemoteState,
) where
import Annex.Common
import Logs
import Logs.UUIDBased
import qualified Annex.Branch
import qualified Annex
import qualified Data.Map as M
type RemoteState = String
setRemoteState :: UUID -> Key -> RemoteState -> Annex ()
setRemoteState u k s = do
c <- liftIO currentVectorClock
config <- Annex.getGitConfig
Annex.Branch.change (remoteStateLogFile config k) $
encodeBL . showLogNew id . changeLog c u s . parseLogNew Just . decodeBL
getRemoteState :: UUID -> Key -> Annex (Maybe RemoteState)
getRemoteState u k = do
config <- Annex.getGitConfig
extract . parseLogNew Just . decodeBL
<$> Annex.Branch.get (remoteStateLogFile config k)
where
extract m = value <$> M.lookup u m