@@ -48,10 +48,11 @@ import Control.Tracer (nullTracer)
4848import Data.ByteString.Lazy.Char8 (ByteString )
4949import qualified Data.Map.Strict as Map
5050import Data.Maybe (fromJust )
51- import Data.Void (Void )
52- import qualified Network.Mux as Mux
5351import Network.TypedProtocol.Peer (Peer (.. ))
54- import Network.TypedProtocol.Stateful.Codec ()
52+
53+ -- import Network.TypedProtocol.Stateful.Codec ()
54+
55+ import qualified Network.Socket as Socket
5556import qualified Network.TypedProtocol.Stateful.Peer as St
5657import Ouroboros.Consensus.Block (CodecConfig , HasHeader , Point , StandardHash , castPoint )
5758import Ouroboros.Consensus.Config (TopLevelConfig , configCodec )
@@ -65,7 +66,6 @@ import Ouroboros.Consensus.Node.DbMarker ()
6566import Ouroboros.Consensus.Node.InitStorage ()
6667import Ouroboros.Consensus.Node.NetworkProtocolVersion (
6768 BlockNodeToClientVersion ,
68- NodeToClientVersion ,
6969 SupportedNetworkProtocolVersion ,
7070 latestReleasedNodeVersion ,
7171 supportedNodeToClientVersions ,
@@ -87,27 +87,26 @@ import Ouroboros.Network.Block (
8787 )
8888import Ouroboros.Network.Channel (Channel )
8989import Ouroboros.Network.Driver.Simple (runPeer )
90- import qualified Ouroboros.Network.Driver.Stateful as St (runPeer )
91- import Ouroboros.Network.IOManager (IOManager )
92- import qualified Ouroboros.Network.IOManager as IOManager
90+ import qualified Ouroboros.Network.Driver.Stateful as Stateful
9391import Ouroboros.Network.Magic (NetworkMagic )
94- import Ouroboros.Network.Mux (OuroborosApplicationWithMinimalCtx )
95- import Ouroboros.Network.NodeToClient (NodeToClientVersionData (.. ))
96- import qualified Ouroboros.Network.NodeToClient as NodeToClient
97- import Ouroboros.Network.NodeToNode (Versions )
92+ import Ouroboros.Network.NodeToClient
9893import Ouroboros.Network.Protocol.ChainSync.Server (
9994 ChainSyncServer (.. ),
10095 ServerStIdle (.. ),
10196 ServerStIntersect (.. ),
10297 ServerStNext (SendMsgRollBackward , SendMsgRollForward ),
10398 chainSyncServerPeer ,
10499 )
105- import Ouroboros.Network.Protocol.Handshake.Version ( simpleSingletonVersions )
100+ import Ouroboros.Network.Protocol.Handshake
106101import qualified Ouroboros.Network.Protocol.LocalStateQuery.Type as LocalStateQuery
107- import Ouroboros.Network.Snocket (LocalAddress , LocalSnocket , LocalSocket (.. ))
102+ import Ouroboros.Network.Server.Simple as Server
103+ import Ouroboros.Network.Snocket
108104import qualified Ouroboros.Network.Snocket as Snocket
105+ import Ouroboros.Network.Socket
109106import Ouroboros.Network.Util.ShowProxy (Proxy (.. ), ShowProxy (.. ))
110107
108+ -- import qualified Network.TypedProtocol.Stateful.Codec as Stateful
109+
111110{- HLINT ignore "Use readTVarIO" -}
112111
113112data ServerHandle m blk = ServerHandle
@@ -212,33 +211,41 @@ runLocalServer ::
212211 FilePath ->
213212 StrictTVar IO (ChainProducerState blk ) ->
214213 IO ()
215- runLocalServer iom codecConfig netMagic localDomainSock chainProdState =
216- withSnocket iom localDomainSock $ \ localSocket localSnocket -> do
217- networkState <- NodeToClient. newNetworkMutableState
218- _ <-
219- NodeToClient. withServer
220- localSnocket
221- NodeToClient. nullNetworkServerTracers -- debuggingNetworkServerTracers
222- networkState
223- localSocket
224- (versions chainProdState)
225- NodeToClient. networkErrorPolicies
226- pure ()
214+ runLocalServer iom codecConfig netMagic localDomainSock chainProdState = do
215+ _ <-
216+ Server. with
217+ (Snocket. socketSnocket iom)
218+ makeSocketBearer -- makeLocalBearer --
219+ (\ _ _ -> pure () )
220+ (Socket. SockAddrUnix localDomainSock)
221+ ( HandshakeArguments
222+ { haHandshakeTracer = nullTracer
223+ , haBearerTracer = nullTracer
224+ , haHandshakeCodec = codecHandshake nodeToClientVersionCodec
225+ , haVersionDataCodec = cborTermVersionDataCodec nodeToClientCodecCBORTerm
226+ , haAcceptVersion = acceptableVersion
227+ , haQueryVersion = queryVersion
228+ , haTimeLimits = noTimeLimitsHandshake
229+ }
230+ )
231+ (versions chainProdState)
232+ (\ _ serverAsync -> wait serverAsync)
233+ pure ()
227234 where
228235 versions ::
229236 StrictTVar IO (ChainProducerState blk ) ->
230237 Versions
231238 NodeToClientVersion
232239 NodeToClientVersionData
233- (OuroborosApplicationWithMinimalCtx 'Mux. ResponderMode LocalAddress ByteString IO Void () )
240+ (SomeResponderApplication Socket. SockAddr ByteString IO () )
234241 versions state =
235242 let version = fromJust $ snd $ latestReleasedNodeVersion (Proxy @ blk )
236243 allVersions = supportedNodeToClientVersions (Proxy @ blk )
237244 blockVersion = fromJust $ Map. lookup version allVersions
238245 in simpleSingletonVersions
239246 version
240247 (NodeToClientVersionData netMagic False )
241- (\ versionData -> NTC. responder version versionData $ mkApps state version blockVersion (NTC. defaultCodecs codecConfig blockVersion version))
248+ (\ versionData' -> SomeResponderApplication $ NTC. responder version versionData' $ mkApps state version blockVersion (NTC. defaultCodecs codecConfig blockVersion version))
242249
243250 mkApps ::
244251 StrictTVar IO (ChainProducerState blk ) ->
@@ -263,8 +270,7 @@ runLocalServer iom codecConfig netMagic localDomainSock chainProdState =
263270 nullTracer -- TODO add a tracer!
264271 (cChainSyncCodec codecs)
265272 channel
266- $ chainSyncServerPeer
267- $ chainSyncServer state codecConfig blockVersion
273+ (chainSyncServerPeer $ chainSyncServer state codecConfig blockVersion)
268274
269275 txSubmitServer ::
270276 localPeer ->
@@ -277,12 +283,12 @@ runLocalServer iom codecConfig netMagic localDomainSock chainProdState =
277283 channel
278284 (Effect (forever $ threadDelay 3_600_000_000 ))
279285
280- stateQueryServer ::
281- localPeer ->
282- Channel IO ByteString ->
283- IO (() , Maybe ByteString )
286+ -- stateQueryServer ::
287+ -- localPeer ->
288+ -- Channel IO ByteString ->
289+ -- IO ((), Maybe ByteString)
284290 stateQueryServer _them channel =
285- St . runPeer
291+ Stateful . runPeer
286292 nullTracer
287293 (cStateQueryCodec codecs)
288294 channel
@@ -405,6 +411,7 @@ chainSyncServer state codec _blockVersion =
405411 let chain = chainDB cps'
406412 pure (castTip (headTip chain), u)
407413
414+ {- }
408415withSnocket ::
409416 forall a.
410417 IOManager ->
@@ -434,6 +441,4 @@ withSnocket iocp localDomainSock k =
434441 Snocket.bind sn sd (Snocket.localAddressFromPath localDomainSock)
435442 Snocket.listen sn sd
436443 k sd sn
437-
438- withIOManager :: (IOManager -> IO a ) -> IO a
439- withIOManager = IOManager. withIOManager
444+ -}
0 commit comments