@@ -24,6 +24,7 @@ import System.Nix.Store.Remote.Logger (processOutput)
2424import System.Nix.Store.Remote.MonadStore
2525import System.Nix.Store.Remote.Socket (sockPutS , sockGetS )
2626import System.Nix.Store.Remote.Serializer (bool , enum , int , mapErrorS , protoVersion , text , trustedFlag , workerMagic )
27+ import System.Nix.Store.Remote.Types.Handshake (Handshake (.. ))
2728import System.Nix.Store.Remote.Types.Logger (Logger )
2829import System.Nix.Store.Remote.Types.ProtoVersion (ProtoVersion (.. ), ourProtoVersion )
2930import System.Nix.Store.Remote.Types.StoreConfig (PreStoreConfig , preStoreConfigToStoreConfig )
@@ -81,13 +82,13 @@ runStoreSocket
8182 -> Run a
8283runStoreSocket preStoreConfig code =
8384 runRemoteStoreT preStoreConfig $ do
84- pv <- greet
85+ Handshake { .. } <- greet
8586 mapStoreConfig
86- (preStoreConfigToStoreConfig pv )
87+ (preStoreConfigToStoreConfig handshakeProtoVersion )
8788 code
8889
8990 where
90- greet :: MonadRemoteStoreHandshake ProtoVersion
91+ greet :: MonadRemoteStoreHandshake Handshake
9192 greet = do
9293
9394 sockPutS
@@ -124,25 +125,32 @@ runStoreSocket preStoreConfig code =
124125 (mapErrorS RemoteStoreError_SerializerPut bool)
125126 False -- reserveSpace, obsolete
126127
127- when (minimumCommonVersion >= ProtoVersion 1 33 ) $ do
128- -- If we were buffering I/O, we would flush the output here.
129- _daemonNixVersion <-
130- sockGetS
131- $ mapErrorS
132- RemoteStoreError_SerializerGet
133- text
134- return ()
135-
136- _remoteTrustsUs <- if minimumCommonVersion >= ProtoVersion 1 35
128+ daemonNixVersion <- if minimumCommonVersion >= ProtoVersion 1 33
129+ then do
130+ -- If we were buffering I/O, we would flush the output here.
131+ txtVer <-
132+ sockGetS
133+ $ mapErrorS
134+ RemoteStoreError_SerializerGet
135+ text
136+ pure $ Just txtVer
137+ else pure Nothing
138+
139+ remoteTrustsUs <- if minimumCommonVersion >= ProtoVersion 1 35
137140 then do
138141 sockGetS
139142 $ mapErrorS RemoteStoreError_SerializerHandshake trustedFlag
140- else do
141- return Nothing
142-
143- -- TODO do something with it
144- _ <- mapStoreConfig
145- (preStoreConfigToStoreConfig minimumCommonVersion)
146- processOutput
147-
148- pure minimumCommonVersion
143+ else pure Nothing
144+
145+ logs <-
146+ mapStoreConfig
147+ (preStoreConfigToStoreConfig minimumCommonVersion)
148+ processOutput
149+
150+ pure Handshake
151+ { handshakeNixVersion = daemonNixVersion
152+ , handshakeTrust = remoteTrustsUs
153+ , handshakeProtoVersion = minimumCommonVersion
154+ , handshakeRemoteProtoVersion = daemonVersion
155+ , handshakeLogs = logs
156+ }
0 commit comments