remote: add preStoreConfigToStoreConfig, use in handshake

This commit is contained in:
sorki 2023-12-02 14:04:22 +01:00
parent a8a4d66f6e
commit ea49946a19
2 changed files with 17 additions and 4 deletions

View File

@ -26,7 +26,7 @@ import System.Nix.Store.Remote.Socket (sockPutS, sockGetS)
import System.Nix.Store.Remote.Serializer (bool, enum, int, mapErrorS, protoVersion, text, trustedFlag, workerMagic)
import System.Nix.Store.Remote.Types.Logger (Logger)
import System.Nix.Store.Remote.Types.ProtoVersion (ProtoVersion(..), ourProtoVersion)
import System.Nix.Store.Remote.Types.StoreConfig (PreStoreConfig(..), StoreConfig(..))
import System.Nix.Store.Remote.Types.StoreConfig (PreStoreConfig, preStoreConfigToStoreConfig)
import System.Nix.Store.Remote.Types.WorkerMagic (WorkerMagic(..))
import System.Nix.Store.Remote.Types.WorkerOp (WorkerOp)
@ -83,7 +83,7 @@ runStoreSocket preStoreConfig code =
runRemoteStoreT preStoreConfig $ do
pv <- greet
mapStoreConfig
(\(PreStoreConfig a b) -> StoreConfig a pv b)
(preStoreConfigToStoreConfig pv)
code
where
@ -141,9 +141,8 @@ runStoreSocket preStoreConfig code =
return Nothing
-- TODO do something with it
-- TODO patter match better
_ <- mapStoreConfig
(\(PreStoreConfig a b) -> StoreConfig a ourProtoVersion b)
(preStoreConfigToStoreConfig minimumCommonVersion)
processOutput
pure minimumCommonVersion

View File

@ -4,6 +4,7 @@ module System.Nix.Store.Remote.Types.StoreConfig
, StoreConfig(..)
, TestStoreConfig(..)
, HasStoreSocket(..)
, preStoreConfigToStoreConfig
) where
import GHC.Generics (Generic)
@ -56,3 +57,16 @@ instance HasProtoVersion TestStoreConfig where
instance HasStoreDir TestStoreConfig where
hasStoreDir = testStoreConfig_dir
-- | Convert @PreStoreConfig@ to @StoreConfig@
-- adding @ProtoVersion@ to latter
preStoreConfigToStoreConfig
:: ProtoVersion
-> PreStoreConfig
-> StoreConfig
preStoreConfigToStoreConfig pv PreStoreConfig{..} =
StoreConfig
{ storeConfig_dir = preStoreConfig_dir
, storeConfig_protoVersion = pv
, storeConfig_socket = preStoreConfig_socket
}